using 语句(C# 参考)(转载)
using 语句
提供可确保正确使用 IDisposable对象的方便语法。
示例
下面的示例演示如何使用 using 语句。
using (var font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
备注
File和 Font是访问非托管资源(本例中为文件句柄和设备上下文)的托管类型的示例。 有许多其他类别的非托管资源和封装这些资源的类库类型。 所有此类类型都必须实现 IDisposable接口。
IDisposable 对象的生存期限于单个方法时,应在 using 语句中声明并实例化它。 using 语句按照正确的方式调用对象上的 Dispose 方法,并(在按照前面所示方式使用它时)会导致在调用 Dispose 时对象自身处于范围之外。 在 using 块中,对象是只读的并且无法进行修改或重新分配。
using 语句可确保调用 Dispose,即使 using 块中发生异常也是如此。 通过将对象放入 try 块中,然后调用 finally 块中的 Dispose,可以实现相同的结果;实际上,这就是编译器转换 using 语句的方式。 前面的代码示例在编译时将扩展到以下代码(请注意,使用额外的大括号为对象创建有限范围):
{
var font1 = new Font("Arial", 10.0f);
try
{
byte charset = font1.GdiCharSet;
}
finally
{
if (font1 != null)
((IDisposable)font1).Dispose();
}
}
有关 try-finally 语句的详细信息,请参阅 try-finally 主题。
可在 using 语句中声明一个类型的多个实例,如下面的示例中所示:
using (Font font3 = new Font("Arial", 10.0f),
font4 = new Font("Arial", 10.0f))
{
// Use font3 and font4.
}
可以实例化资源对象,然后将变量传递到 using 语句,但这不是最佳做法。 在这种情况下,程序退出 using 块以后,对象保留在作用域中,但是可能没有访问其未托管资源的权限。 换而言之,它不再是完全初始化的。 如果尝试在 using 块外部使用该对象,则可能导致引发异常。 因此,通常最好在 using 语句中实例化该对象并将其范围限制在 using 块中。
var font2 = new Font("Arial", 10.0f);
using (font2) // not recommended
{
// use font2
}
// font2 is still in scope
// but the method call throws an exception
float f = font2.GetHeight();
有关释放 IDisposable 对象的详细信息,请参阅使用实现 IDisposable 的对象。
C# 语言规范
有关详细信息,请参阅 C# 语言规范中的 using 语句。 该语言规范是 C# 语法和用法的权威资料。
using 语句(C# 参考)(转载)的更多相关文章
- HQL语句大全(转载)
Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承.多态 和关联之类的概念. ...
- HTML URL编码参考(转载)
URL编码(URL encoding)的作用是将字符转化为可在因特网上安全传输的格式.URL——统一资源定位符Web浏览器通过URL从Web服务器上请求页面.URL就是网页的地址,如:http://w ...
- awk学习[参考转载]
一.基本示例 1.last -n 5 | awk '{print $1}' $0代表全部 2.last -n 5 | awk -F: '{print $1}' -F代表设置分割符, :代表 ...
- SQL 语句快速参考
来自 W3CSchool 的 SQL 快速参考 SQL 语句 语法 AND / OR SELECT column_name(s)FROM table_nameWHERE conditionAND|OR ...
- sql语句规范参考
公司有SQL语句规范的参考,这里特别做个笔记. 书写风格 1. 语句关键字应全部使用小写. 2. 引用字符时应使用单引号.如:update testable set idcol=’abcd’. 3. ...
- Oracle系统表整理+常用SQL语句收集(转载)
原文:https://www.cnblogs.com/jiangxinnju/p/5840420.html-- DBA/ALL/USER/V_$/GV_$/SESSION/INDEX开头的绝大部分都是 ...
- SQL语句优化(转载)
一.操作符优化 1.IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格.但是用IN的SQL性能总是比较低的,从Oracle执行的步骤来分析用IN的SQL与不用 ...
- SQL 语句大全(转载)
经典SQL语句大全 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serv ...
- SQL语句大全(转载)
经典SQL语句大全 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serv ...
- GJM :Sql 各种语句 以及函数 [转载]
版权声明:本文原创发表于 [请点击连接前往] ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理! 1.更改数据库的名称 2.表中有数据的情况下再添加列.删除列 3.在SQLServer 中各种 ...
随机推荐
- (原)ubuntu中C++调用libotrch
转载请注明出处: https://www.cnblogs.com/darkknightzh/p/11479240.html 参考网址: https://pytorch.org/tutorials/ad ...
- OpenLDAP 常用命令
OpenLDAP 常用命令 本文原始地址:https://sitoi.cn/posts/5308.html ldapsearch ldapsearch - ldap 搜索工具 ldapsearch 实 ...
- Ubuntu 开发环境搭建教程
Ubuntu 开发环境搭建教程 本文原始地址:https://sitoi.cn/posts/18425.html 更新 sudo apt upgrade sudo apt update 生成本机密钥 ...
- woocommerce面包屑导航breadcrumb的修改
我们知道woocommerce自带了面包屑导航breadcrumb,但有时我们需要调整一下它所在的位置,那么需要如何操作呢?有哪些参数可以调用呢?随ytkah一起来看看吧 首先删除默认的面包屑导航 1 ...
- uniapp增加百度统计代码(h5)
做了个微信公众号文章互相阅读的h5界面,http://mptask.wintp.top/(只能微信浏览器打开),其中用到了统计代码,记录如下. 1.新建 tj.html 界面 可放置在项目的根目录,文 ...
- Windows WoW64浅析
WOW64(Windows-On-Windows 64bit)是X64 Windows操作系统的一个子系统,为32位应用程序提供运行环境.类似的还有WOW32子系统,负责在32位Windows系统上运 ...
- zabbix-钉钉报警媒介
(1)第三方报警平台(钉钉) 先指定要发送的群,在群里创建机器人 添加机器人 可以参考 “说明文档” 创建测试文档 vim ceshi.sh curl 'https://oapi.dingta ...
- python3中“->”的含义
->:标记返回函数注释,信息作为.__annotations__属性提供 __annotations__属性是字典.键return是用于在箭头后检索值的键.但是在Python中3.5,PEP 4 ...
- 3-OpenResty 配置PHP
由于咱以前是用PHP做的东西,又不想重新用 OpenResty自带的编写,所以呢咱设置下,可以像以前Apache那样访问PHP文件 首先去下载 PHP https://windows.php.net/ ...
- day 19
If you think you can, you can. And if you think you can't, you're right.