2016-06-29 28 views
2

私は現在、ドキュメンテーションがなく、EMGUを使用するNDAライブラリ(非営利目的)を使用しています。ここで は私の質問の例です:私は1つの関数から別のものにEMGU-画像を渡すとC#でパラメータを処分する必要はありますか?

public void example() 
{ 
    Image<Gray,byte> exp = new Image<Gray,byte>(128,128); 
    foo(exp); 
    exp.Dispose(); 
} 

public bool foo(Image<Gray,byte> bar) 
{ 
    //magic here 
    //bar.Dispose() ?? 
    return true; 
} 

、私も、呼び出された関数で.Dispose()を呼び出す必要がありますか?それとも、それを呼び出すのに十分ですか?

+1

良い質問ですが、既に回答済みです。経験則の標準は、所有権の移転が合意されていない限り、あなたが*作成する*責任を負います。詳細については、パラメータの受け渡し方法も参照してください。このようなオブジェクトはC#で参照渡しされるので、オブジェクトのコピーは作成しません。 –

+0

また、例外がスローされてもexp.Dispose()が呼び出されるようにするには、 'using'キーワードを使用するべきです。 –

+0

@CodyGray oh snap!しかし、私は複数回検索を使用すると誓っています。しかし、たぶん私はちょうど正しい言葉でそれを検索することができませんでした。あなたの答え(コメント)とリンクありがとう! –

答えて

0

Dispose()を1回だけ呼び出す方が良いです。しかし、Dispose()メソッドが "通常の方法"で書かれていれば、それを複数回呼び出すことは大丈夫です。

関連する問題