[C#][Tips]再探using陈述式
2021-02-04 00:17
标签:finally pre 两种 写法 验证 成功 use 简洁 serve [C#][Tips]再探using陈述式 上一篇我大概介绍了什么是using statement,简单可以说using statement就是try finally的简洁语法, 但我有些朋友却认为using statement会吃掉所有例外状况(try catch finally语法), 而之前在MSDN论坛上也有看到某些网友也支持这样的说法, 所以这篇我就来验证using statement到底是否有含catch。
我利用MSDN范列编译成功后,比对IL中介码来看看using statement是否真的包含catch。
IL ?
可以看到两种写法的IL中介码几乎一模一样,而且不包含catch。
来看看try catch finally后的IL中介码 ?
透过IL中介码我们可以知道using statement真的不包含catch,所以千万不要在误会使用using stement会吃掉所有例外状况。
上一篇我也提到如果要捕抓例外状况须自行加入try catch,我们也来看看C#编译器会输出什么样的程序。 ?
可以看到使用using statement+try catch后,就如同使用try catch finally。
再补充using statement注意事项: 1.由于会隐含执行Dispose,所以不需要再手动处理,如果自己在手动执行Close()、Dispose(), ? 只会让CLR再度浪费资源进而影响程序性能。
参考 SQL Server Connection Pooling (ADO.NET) 原文:大专栏 [C#][Tips]再探using陈述式 [C#][Tips]再探using陈述式 标签:finally pre 两种 写法 验证 成功 use 简洁 serve 原文地址:https://www.cnblogs.com/petewell/p/11489726.html
Font font2 = new Font("Arial", 10.0f);
using( font2 )
{
bool isbold = font2.Bold;
}
Font font2 = new Font( "Arial", 10.0f );
try
{
bool isbold = font2.Bold;
}
finally
{
if( font2 != null )
font2.Dispose();
}
Font font2 = new Font( "Arial", 10.0f );
try
{
bool isbold = font2.Bold;
}
catch( Exception ex )
{
}
finally
{
if( font2 != null )
font2.Dispose();
}
Font font2 = new Font( "Arial", 10.0f );
using( font2 )
{
try
{
bool isbold = font2.Bold;
}
catch( Exception ex )
{
}
}
上一篇:[WIN]如何让您的UserControl显示时不闪烁
下一篇:c#十进制转换
文章标题:[C#][Tips]再探using陈述式
文章链接:http://soscw.com/index.php/essay/50656.html