繁体   English   中英

C#/ VB.NET using语句实际上对未实现IDisposable的类做任何事情

[英]Does C#/VB.NET using statement actually do anything with classes that do not implement IDisposable

如果我有类似以下内容:

public class Myclass{

//some resources

}

然后在另一堂课中,我执行以下操作:

using(Myclass myclass = new Myclass()) {
// do things with myclass instance

}

在这种情况下,using语句是否实际提供任何使用? Myclass尚未实现IDisposable接口,因此没有要调用的Dispose()方法。 我在正确考虑吗?

如果您的类未实现IDisposable则不能在using语句中使用它。 这将是编译时错误。

除此之外, using语句转换为try-finally块,并在using语句结束时调用Dispose (即使在发生异常的情况下) CLR 实际处置对象没有什么神奇的事情,这完全取决于Dispose的实现。 您可以有一个空的Dispose方法实现,并且不会起作用。

您不能与不能实现IDisposable类型一起using 您将得到一个编译器错误。 而已。

  • MSDN C# :...所有此类类型都必须实现IDisposable接口。
  • MSDN VB.NET ...必需。 资源的类别。 该类必须实现IDisposable接口...

是您遇到的CS1674编译器错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM