如何在实现IDisposable的类中的MemoryStream对象上使用"using"后实现Dispose方法?
public class ControlToByte :IDisposable
{
public static byte[] GetByte(object control)
{
using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream())
{ //do something here }
public void Dispose()
{
//how do you dispose of memorystream object?
}
Run Code Online (Sandbox Code Playgroud)
您不必实现IDispose,也不必Dispose显式调用.该using区块将确保在完成MemoryStream后将被处置.using块实际上像try/finally块一样工作.就像是:
{
System.IO.MemoryStream memoryStream = null;
try
{
memoryStream = new System.IO.MemoryStream();
//....your code
}
finally
{
if (memoryStream != null) //this check may be optmized away
memoryStream.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
using语句确保即使在对象上调用方法时发生异常,也会调用Dispose.您可以通过将对象放在try块中然后在finally块中调用Dispose来实现相同的结果; 实际上,这就是编译器如何翻译using语句.
在您当前的代码中,您正在IDisposable您的课程中实施ControlToByte,如果您想要在其中部署资源,这将非常有用ControlToByte.如图所示,您不需要IDisposable为您的班级实施.
| 归档时间: |
|
| 查看次数: |
770 次 |
| 最近记录: |