たとえばHttpWebResponse、 を実装しているIDisposableため、破棄する必要があるオブジェクトがあります。
これを持っている:
HttpWebResponse a = ....;
オブジェクトを処理する正しい方法は何ですか?
a.Dispose();
または:
if (a!= null)
a.Dispose();
オブジェクトが null であるかどうかさえ気にする必要がありますか? とにかく処分できないのでしょうか?
たとえばHttpWebResponse、 を実装しているIDisposableため、破棄する必要があるオブジェクトがあります。
これを持っている:
HttpWebResponse a = ....;
オブジェクトを処理する正しい方法は何ですか?
a.Dispose();
または:
if (a!= null)
a.Dispose();
オブジェクトが null であるかどうかさえ気にする必要がありますか? とにかく処分できないのでしょうか?
usingステートメントで実装IDisposableするものはすべてラップすることをお勧めします。
using (var a = new HttpWebResponse(...))
{
}
書くのと同じです
var a = new HttpWebResponse(...);
try
{
// use a
}
finally
{
if (a != null)
a.Dispose();
}
オブジェクトが null であるかどうかさえ気にする必要がありますか? どうせ処分するしかないでしょ
Disposeいいえ、オブジェクトを呼び出そうとするとnull、アプリケーションはNullReferenceException. ステートメントが有効なオプションではないと感じる状況を考えると、usingこれを整理するもう1つのきちんとした方法は、拡張メソッドを作成することです。
public static class Ext
{
public static void SafeDispose(this object obj)
{
if (obj != null)
obj.Dispose();
}
}
...
var a = new ...;
a.SafeDispose();
これにより、null オブジェクトでメソッドを呼び出すことができます。
最初にnullでないかどうかを確認してから破棄します。そうしないと、もちろん例外が発生します。