c# - 将 C# 8.0 转换为 C# 7.0
问题描述
我正要使用下面的 C# 代码。
await using (var producerClient = new EventHubProducerClient(ConnectionString, EventHubName))
{
using EventDataBatch eventBatch = await producerClient.CreateBatchAsync();
eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes(eventData)));
await producerClient.SendAsync(eventBatch);
}
但是在构建服务器中,这会失败,因为上面是 C# 8.0 代码,并且构建服务器仅支持 C# 7.0 代码。有人可以帮我将上面的代码从 C# 8.0 转换为 C# 7.0,因为我无法让它工作吗?
解决方案
从长远来看,更新构建服务器肯定会更好。无论如何,您迟早需要这样做。
C# 8.0 有using 声明,它改变了这个:
using var x = ...;
...
进入这个:
using (var x = ...)
{
...
}
此代码中的另一个 C# 8.0 功能是await using
,它将代码转换如下:
await using (var x = ...)
{
...
}
变成类似于这样的东西:
var x = ...;
try
{
...
}
finally
{
await x.DisposeAsync();
}
手动应用这两种转换可以为您提供:
var producerClient = new EventHubProducerClient(ConnectionString, EventHubName);
try
{
using (EventDataBatch eventBatch = await producerClient.CreateBatchAsync())
{
eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes(eventData)));
await producerClient.SendAsync(eventBatch);
}
}
finally
{
await producerClient.DisposeAsync();
}
推荐阅读
- python - Python比较文件名和文件夹名
- c# - 二进制搜索数组以在列表视图中显示一行字符串 c# (Visual Studio)
- javascript - 画布上的像素尺寸不合适
- sdk - 亚马逊设备消息传递 (ADM) 1.1.0 IncompatibleClassChangeError 异常
- java - 如何在创建和更改 UI 的方法的同时运行播放歌曲的方法?
- opencv - 无法通过视频帧进行对象检测 Tensorflow python
- git - Git文件夹重命名一直失败 - 权限被拒绝
- css - 引导下拉链接没有样式
- mongodb - 查询生成的没有模型的 mongo-version 集合
- javascript - 如何从代理对构造 JavaScript 中的 UTF-16 字符?