如果我有以下内容:
public class Myclass{
//some resources
}
Run Code Online (Sandbox Code Playgroud)
然后在另一个班级我做以下事情:
using(Myclass myclass = new Myclass()) {
// do things with myclass instance
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,using语句实际上是否提供了任何用途?Myclass没有实现IDisposable接口,所以没有任何Dispose()方法可以调用.我正确地考虑了这个吗?
如果您的类没有实现,IDisposable那么您不能在using语句中使用它.这将是一个编译时错误.
除此之外,using语句转换为try-finally块并在using语句结束时Dispose被调用(即使在例外的情况下).CLR没有做任何神奇的实际处理对象,这一切都取决于实现Dispose.您可以使用Dispose方法的空实现,但不会产生任何影响.