使用C#进行处理 - 完全实现

Par*_*igm 2 c# dispose using

如何在实现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)

Hab*_*bib 6

您不必实现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)

使用C#

using语句确保即使在对象上调用方法时发生异常,也会调用Dispose.您可以通过将对象放在try块中然后在finally块中调用Dispose来实现相同的结果; 实际上,这就是编译器如何翻译using语句.

在您当前的代码中,您正在IDisposable您的课程中实施ControlToByte,如果您想要在其中部署资源,这将非常有用ControlToByte.如图所示,您不需要IDisposable为您的班级实施.