C# using语句的使用

简介:

 

使用时注意事项

①using只能用于实现了IDisposable接口的类型,禁止为不支持IDisposable接口的类型使用using语句,否则会出现编译错误;
②using语句适用于清理单个非托管资源的情况,而多个非托管对象的清理最好以try-finnaly来实现,因为嵌套的using语句可能存在隐藏的Bug。内层using块引发异常时,将不能释放外层using块的对象资源;
③using语句支持初始化多个变量,但前提是这些变量的类型必须相同,例如:
using(Pen p1 = new Pen(Brushes.Black), p2 = new Pen(Brushes.Blue))
{
//
}
④针对初始化对个不同类型的变量时,可以都声明为IDisposable类型,例如:
 using (IDisposable font = new Font("Verdana", 12), pen = new Pen(Brushes.Black))
{
float size = (font as Font).Size;
Brush brush = (pen as Pen).Brush;
 }

 

using实质

在程序编译阶段,编译器会自动将using语句生成为try-finally语句,并在finally块中调用对象的Dispose方法,来清理资源。所以,using语句等效于try-finally语句,例如:
 Font f2 = new Font("Arial", 10, FontStyle.Bold);
try
{
//执行文本绘制操作
}
finally
{

  if (f2 != null) ((IDisposable)f2).Dispose();
}

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。







    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7222140.html ,如需转载请自行联系原作者


相关文章
|
12月前
|
监控 安全 测试技术
2024年度云治理企业成熟度发展报告解读(三)五大支柱关键数据解读
本文深入分析了安全、稳定、成本、性能、运行等云治理五大支柱的关键数据,指出身份安全关注度显著提升,成为企业云计算中的核心焦点。
250 11
2024年度云治理企业成熟度发展报告解读(三)五大支柱关键数据解读
|
数据采集 Python
如何用Python Selenium和WebDriver抓取LinkedIn数据并保存登录状态
本文介绍了使用Python Selenium和WebDriver库抓取LinkedIn数据的方法。首先,安装Selenium库和对应的WebDriver,然后配置爬虫代理IP以避免频繁请求被检测。接下来,设置user-agent和cookies以模拟真实用户行为,实现登录并保持状态。登录后,使用WebDriver抓取目标页面数据,如用户名、年龄、性别和简历信息。最后,强调了优化代码、处理异常和遵守使用条款的重要性,以提高效率并避免账号被封禁。
423 2
如何用Python Selenium和WebDriver抓取LinkedIn数据并保存登录状态
|
存储
Obsidian 与 Typora 图片兼容保存路径一致设置
Obsidian 与 Typora 图片兼容保存路径一致设置
977 0
|
存储 C++
面试题:C/C++引用和指针的区别?
面试题:C/C++引用和指针的区别?
197 0
|
Java 编译器 API
【Java】lambda表达式,Stream API,函数式编程接口
【Java】lambda表达式,Stream API,函数式编程接口
|
人工智能 运维 自然语言处理
7 Papers & Radios | 华为配置管理研究获SIGCOMM 2022最佳论文;用即插即用模块改进ViT和卷积模型
7 Papers & Radios | 华为配置管理研究获SIGCOMM 2022最佳论文;用即插即用模块改进ViT和卷积模型
220 0
|
存储 SQL 关系型数据库
【大数据系列之MySQL】(三十四):存储过程的介绍
【大数据系列之MySQL】(三十四):存储过程的介绍
210 0
Cannot find source code based button in SE24
When you are logging on to customer system for incident handling, you want to switch to source code to perform some keyword search. However, you could not find button “Source code based builder” in toolbar, with following warning message: ———————————————— 版权声明:本文为CSDN博主「汪子熙」的原创文章,遵循CC 4.0 BY-SA版权协
172 0
Cannot find source code based button in SE24
|
缓存 JSON 监控
日志服务权限配置问题
一. 权限介绍 1. 为什么需要授权 RAM授权 您可以通过RAM创建、管理用户账号(例如员工、系统或应用程序),并控制这些用户账号对您名下资源具有的操作权限。当您的企业存在多用户协同操作资源时,使用RAM可以让您避免与其他用户共享云账号密钥,按需为用户分配最小权限,从而降低您的企业信息安全风险。
9584 0
日志服务权限配置问题
|
SQL 数据库 数据库管理
数据管理DMS移动版之2018新年巨献(三)数据库性能服务CloudDBA
大家在PC端时已经体验了CloudDBA的相关功能,为适应大家移动办公的诉求。此次我们将PC端的功能精简移植到了移动版内,本次所有功能点对RDS-MySQL完美支持,对ECS自建库本次先增加了实例会话、实时性能与空间三大功能。
2633 0