我有一个实现HttpWebResponse
的对象,例如IDisposable
,因此应该被处理掉。
有这个:
HttpWebResponse a = ....;
处理对象的正确方法是什么?
a.Dispose();
或者:
if (a!= null)
a.Dispose();
我是否应该关心对象是否为空?不管怎样我不能处理它?</ p>
答案 0 :(得分:10)
通常建议用using语句包装任何实现IDisposable
的内容
using (var a = new HttpWebResponse(...))
{
}
这相当于写作
var a = new HttpWebResponse(...);
try
{
// use a
}
finally
{
if (a != null)
a.Dispose();
}
我是否应该关心对象是否为空?我无论如何都不能处理它
嗯不,因为如果您尝试在Dispose
对象上调用null
,应用程序将抛出NullReferenceException
。鉴于您认为using
语句不是有效选项的情况,另一种整理方式是编写扩展方法,例如。
public static class Ext
{
public static void SafeDispose(this object obj)
{
if (obj != null)
obj.Dispose();
}
}
...
var a = new ...;
a.SafeDispose();
然后将允许您在空对象上调用该方法。
答案 1 :(得分:0)
首先检查它是否为空然后处置,否则你会得到一个例外。