我试图理解这个 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/