以下代码在执行时不会产生错误:
using ((IDisposable)null) {
Console.WriteLine("A");
}
Console.WriteLine("B");
null 值是否为using
'允许'?如果是,它会在哪里记录?
我见过的大多数C#代码都会创建一个“虚拟/ NOP”IDisposable对象 - 是否特别需要一个非null的Disposable对象?有没有?
如果/ since允许为null,则允许在中放置一个空值,而不是之前或之前。
C# Reference on Using未提及空值。
答案 0 :(得分:6)
是的,允许空值。 C#5.0规范的§8.13,“使用声明”说:
如果获取了
null
资源,则不会调用Dispose
,也不会抛出任何异常。
然后,规范为表单
的using
语句提供以下扩展
using (ResourceType resource = expression) statement
resource
是引用类型(dynamic
除外):
{
ResourceType resource = expression;
try {
statement;
}
finally {
if (resource != null) ((IDisposable)resource).Dispose();
}
}