考虑以下代码:
public class Test
{
public async Task Do()
{
await Task.Delay(200);
using (var disposable = new Disposable())
{
disposable.Do();
}
}
}
public class Disposable : IDisposable
{
public void Do()
{
}
public void Dispose()
{
}
}
当我在Visual Studio中运行代码分析时,我收到一个警告:
警告 CA1001:在 Test.< Do>d__0 上实现 IDisposable,因为它创建了以下 IDisposable 类型的成员:'Disposable'。
为什么会有这个警告?Disposable类被正确释放并且我没有将其存储在任何地方。
此外,这似乎对分析器来说是可以接受的:
public class Test
{
public void Do()
{
using (var disposable = new Disposable())
{
disposable.Do();
}
}
}