2016-04-01 6 views
0

インスタンスクラスのプライベートフィールドとしてmemorystreamを使用するのは危険ですか?memorystreamをプライベートフィールドとして使用するのは危険ですか

class MyIDisposableClass:IDisposable{ 
private MemoryStream _stream; 


//do stuff with _stream 


void Dispose(){ 
_stream.Close(); 
_stream.Dispose();//does this statement make sense here ? 
} 
} 

をこのように使用されます:

クラスはIDisposableをを実装

using(MyIDisposableClass() bla=new MyIDisposableClass()) 
{...} 

であることは良いアプローチまたは私はそのようなものに、すべてのクラスメンバへのアクセスを提供するために、何かを行う必要があります情報の?

+1

Before Disposing Inside Using Statement Disposed After Disposing 

参照フィドルhereを出力します。 https://msdn.microsoft.com/en-us/library/fs2xkftw(v=vs.110).aspx – MickyD

答えて

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"); 
    } 
} 

これはおそらく、 `廃棄(ブール値)`すぎを実装したい

関連する問題