将内存流用作实例类中的私有字段是否很危险?
该类实现了IDisposable:
class MyIDisposableClass:IDisposable{
private MemoryStream _stream;
//do stuff with _stream
void Dispose(){
_stream.Close();
_stream.Dispose();//does this statement make sense here ?
}
}
将像这样使用:
using(MyIDisposableClass() bla=new MyIDisposableClass())
{...}
这是一种好方法,还是应该做其他事情,让所有班级成员都能访问这类信息?
答案 0 :(得分:1)
只要您将对象包装在使用中
,就可以了。在使用块之后,将调用对象的处置方法。只要你清理一切,你就没事了。
如果您担心何时会被调用,此处的代码会显示给您。
using System;
public class DisposableExample : IDisposable
{
public void Dispose()
{
Console.WriteLine("Disposed");
}
}
public class Program
{
public static void Main()
{
Console.WriteLine("Before Disposing");
using(var disposableObj = new DisposableExample())
{
Console.WriteLine("Inside Using Statement");
}
Console.WriteLine("After Disposing");
}
}
这将打印出来
Before Disposing
Inside Using Statement
Disposed
After Disposing
请参阅小提琴this question