将 C# 8.0 转换为 C# 7.0

Converting C# 8.0 to 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 declarations,转换为:

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();
}