use*_*740 2 c# null idisposable using-statement
以下代码在执行时不会产生错误:
using ((IDisposable)null) {
Console.WriteLine("A");
}
Console.WriteLine("B");
Run Code Online (Sandbox Code Playgroud)
是'允许' 的空值using?如果是这样,它在哪里记录?
我见过的大多数C#代码都会创建一个"dummy/NOP"IDisposable对象 - 是否特别需要非null的Disposable对象?有没有?
如果/因为空是允许的,它允许将一个空后卫内 using语句来之前或周围的反对.
使用C#Reference没有提到空值.
是的,允许空值.C#5.0规范的第8.13节"使用声明"说:
如果
null获取了资源,则不会进行任何调用Dispose,也不会抛出任何异常.
然后,规范为using表单声明提供以下扩展
using (ResourceType resource = expression) statement
Run Code Online (Sandbox Code Playgroud)
when resource是引用类型(除了dynamic):
{
ResourceType resource = expression;
try {
statement;
}
finally {
if (resource != null) ((IDisposable)resource).Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |