[英]“using” block together with “dynamic”
如果我写
using (dynamic d = getSomeD ()) {
// ...
}
这是否意味着在离开using
块时会调用d.Dispose ()
?
当d
不实现IDisposable
时会发生什么?
这是否意味着在离开using块时会调用d.Dispose()?
是。 如果该类型实现IDisposable
则将调用Dispose
。
当d不实现IDisposable时会发生什么?
你会得到一个例外
System.Core.dll中发生了类型为“ Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”的未处理异常
无法将类型“ YourType”隐式转换为“ System.IDisposable”。 存在显式转换(您是否缺少演员表?)
您可以通过上一堂课来尝试一下:
class MyDisposable : IDisposable //Remove IDisposable to see the exception
{
public void Dispose()
{
Console.WriteLine("Dispose called");
}
}
接着:
using (dynamic d = new MyDisposable())
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.