gpt4 book ai didi

c# - IDE0063什么时候配置?

转载 作者:太空狗 更新时间:2023-10-29 21:21:02 25 4
gpt4 key购买 nike

我试图理解这个 C# 8 简化功能:

IDE0063 'using' statement can be simplified

例如,我有:

void Method()
{
using (var client = new Client())
{
// pre code...
client.Do();
// post code...
} --> client.Dispose() was called here.
// more code...
}

IDE 告诉我可以通过编写以下代码来简化此 using 语句:

void Method()
{
using (var client = new Client());
// pre code...
client.Do();
// post code...
// more code...
}

我无法理解它是如何工作的以及它如何决定我不再使用变量。更具体地说,它究竟在什么时候调用 client.Dispose 方法?

最佳答案

您使用的是 C# 8。在旧的 C# 版本中,; 会使此无效。

在新语法中,client 保留在周围方法(或其他 {} 范围 block )的范围内。请注意,您也可以省略 () 的外部对。

它叫做using 声明,文档是here .

void Method()
{
using var client = new Client();
// pre code...
client.Do();
// post code...
// more code...
} --> client.Dispose() is called here (at the latest)

逻辑上 Dispose 发生在 但优化器可能会更早执行。

编辑

我注意到在 using block 结束后有 //more code 会阻止这种改进的出现。所以转换成下面的代码就不会再有歧义了:

void Method()
{
// not relevant code

using (var client = new Client())
{
// pre code...
client.Do();
// post code...
}
}

进入这段代码:

void Method()
{
// not relevant code

using var client = new Client();
// pre code...
client.Do();
// post code...
}

关于c# - IDE0063什么时候配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57460048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com