C# iDisposable对象使用block和try/catch
如果我写这样的代码:C# iDisposable对象使用block和try/catch,c#,C#,如果我写这样的代码: try { using (StreamReader rdr = new StreamReader(response.GetResponseStream())) { } } catch(Exception e) { } StreamReader对象抛出异常(从而获得捕获),using块是否正确完成并释放?或者我需要在try中包装using块的内容吗 我想确保我能适当地清理 使用块是否正确完成并处理 对。但是,如果GetResponseStream
try
{
using (StreamReader rdr = new StreamReader(response.GetResponseStream()))
{
}
}
catch(Exception e)
{
}
StreamReader对象抛出异常(从而获得捕获),using块是否正确完成并释放?或者我需要在try中包装using块的内容吗
我想确保我能适当地清理
使用块是否正确完成并处理
对。但是,如果GetResponseStream
抛出异常,那么就没有什么可处理的,因为您尚未初始化StreamReader
使用块是否正确完成并处理
对。但是,如果
GetResponseStream
引发了异常,那么就没有什么可处理的,因为您尚未初始化StreamReader
是。控件一退出使用块,对象就被释放。是。控件一退出使用块,对象就被释放。是<代码>使用语句的解释类似于<代码>尝试。。。最后
让我们看一个例子:
using (Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
前面的代码示例在编译时扩展为以下代码(注意额外的大括号用于创建对象的有限范围):
例如:
Font font1 = new Font("Arial", 10.0f);
try
{
byte charset = font1.GdiCharSet;
}
finally
{
if (font1 != null)
((IDisposable)font1).Dispose();
}
}
要了解如何使用语句,请选择“是”<代码>使用语句的解释类似于<代码>尝试。。。最后 让我们看一个例子:
using (Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
前面的代码示例在编译时扩展为以下代码(注意额外的大括号用于创建对象的有限范围):
例如:
Font font1 = new Font("Arial", 10.0f);
try
{
byte charset = font1.GdiCharSet;
}
finally
{
if (font1 != null)
((IDisposable)font1).Dispose();
}
}
要了解如何使用语句,请,。啊,对不起:(我没看到那个…)jon在这里回答:谢谢Meirion HughesAh抱歉:(我没看到那个…)jon在这里回答:谢谢Meirion Hughes