丢弃作用域创建副作用的返回值

问题描述 投票:0回答:1

我有这样一个代码块:

public async Task HandleAsync(Func<Task> next, CancellationToken cancellationToken) {
    using (var scope = logger.BeginScope("myName")) {
      await next();
    }
}

Jetbrains Rider 建议将其更改为:

public async Task HandleAsync(Func<Task> next, CancellationToken cancellationToken) {
    using (_ = logger.BeginScope("myName")) {
      await next();
    }
}

然后是这个:

public async Task HandleAsync(Func<Task> next, CancellationToken cancellationToken) {
  logger.BeginScope("myName");
  await next();
}

我想知道

using (_ = logger.BeginScope("myName"))
或最后一个建议是否与我的第一个代码块相同。如果我应用这些建议,会产生任何不需要的副作用吗?

谢谢, 格克琴

c# scope using
1个回答
0
投票

不知道记录器实现,假设它依赖于 using/dispose 来输出开始/结束日志消息,因为这是一种常见模式,那么......

不,最后一个建议不会与前两个建议相同。

前 2 个显式处理 logger 返回的对象。因此您将在您期望的位置收到“结束”日志消息。

最后一个没有。这意味着处置将会发生,但您不知道何时发生。所以'end'日志消息将会输出在一个不可预知的地方。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.