use*_*635 7 c# dispose idisposable
例如HttpWebResponse,我有一个实现的对象,IDisposable因此应该被处理掉.
有这个:
HttpWebResponse a = ....;
Run Code Online (Sandbox Code Playgroud)
处理对象的正确方法是什么?
a.Dispose();
Run Code Online (Sandbox Code Playgroud)
要么:
if (a!= null)
a.Dispose();
Run Code Online (Sandbox Code Playgroud)
我是否应该关心对象是否为空?不管怎样我不能处理它?
Jam*_*mes 12
通常建议IDisposable用using语句包装任何实现的东西
using (var a = new HttpWebResponse(...))
{
}
Run Code Online (Sandbox Code Playgroud)
这相当于写作
var a = new HttpWebResponse(...);
try
{
// use a
}
finally
{
if (a != null)
a.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
我是否应该关心对象是否为空?不管怎样我也不能处理它
好吧不,因为如果你试图调用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();
Run Code Online (Sandbox Code Playgroud)
然后,这将允许您在null对象上调用该方法.
| 归档时间: |
|
| 查看次数: |
5900 次 |
| 最近记录: |