using 用法拾忆
using 用法主要包括三种:
1、引用外部命名空间以及外部命名空间中定义的类型(指令)
2、创建命名空间别名,避免因名称相同造成的冲突(指令)
3、定义资源使用范围,在范围结束后释放资源对象(语句)
1. 引用外部命名空间或者类型,允许在在本命名空间内使用引用命名空间类型:
using System.IO;
using System.Linq;
using System.Text;
2.创建命名空间别名,区别相同名称命名空间或类型:
using txt= System.Text;
using com=Common.Log;
using model=Model.log;
区别不同命名空间下相同类型也可以通过书写全名称引用,不过通过别名的直接引用更简洁。
3.using语句块,可以根据需要适时的释放资源对象。需要注意的是using语句块定义的资源对象必须实现了IDisposable接口,
以通过dispose函数对资源对象进行销毁释放:
单个资源对象
Pen pen=new Pen(Brushes.Red)
using (pen)
{
}
using (Pen pen=new Pen(Brushes.Red))
{
}
同类型多个资源对象
using (Pen pen=new Pen(Brushes.Red),blackPen=new Pen(Brushes.Black))
{
}
多类型多个资源对象
using (IDisposable pen = new Pen(Brushes.Red), image = new FileStream(@"D:\file.txt",FileMode.Create))
{
}
注:单个资源对象时,对象的声明可以在using内部也可以是外部已经声明过的对象;多个资源对象时必须是在using内部进行声明,
而且using在编译期会对类型进行检查,必须保证对象类型一致;多种类型的资源对象则需要声明为IDisposable类型,初始化为使用
的不同类型的资源对象;
using语句块的实质等效于try..finally语句块,因为代码在编译期间会把using语句块转换为try...finally语句块进行处理,而对资源对象
的销毁工作则在finally内通过调用Idisposable的dispose函数进行销毁,所以对象类型必须继承IDisposable接口。在使用using语句块
时应注意不能多层嵌套using语句块,因为内层语句块中可能出现bug,这会造成外层using无法正常进行资源的释放。此使用场景应该选择使用
try...finally进行资源对象的销毁更优。
try
{
}
finally
{
//资源销毁;
}
转载于:https://www.cnblogs.com/ultimateWorld/p/5278692.html
using 用法拾忆相关推荐
- html结构内容拾忆
html结构内容拾忆 文本格式化: 1 <b>This text is bold</b><!--定义粗体文本.--> 2 <strong>This te ...
- 拾忆Elasticsearch04:Elasticsearch实操
1. 本篇目标 我们在一些电商网站搜索商品时,会搜索到许多相关商品,例如在某宝和某东搜索"Java",会出现以下结果 某宝 某东 可以看到,两边都顺利的搜到符合要求的商品,某东甚至 ...
- java毕业设计拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw
java毕业设计拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S ...
- 计算机毕业设计JAVA拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw
计算机毕业设计JAVA拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目 ...
- python punctuation_经验拾忆(纯手工)=gt; Python基本数据类型_Python - UCloud云社区...
数据结构 可变类型与不可变类型(重头戏) 基操: 可变类型:[], {} # 可增删改 查 不可变类型: int float str () # 无法增删改, 只可查 升操: + 与 += 的区别: 也 ...
- spring mvc DispatcherServlet详解之拾忆工具类utils
DispatcherServlet的静态初始化 /*** Name of the class path resource (relative to the DispatcherServlet clas ...
- Django组件拾忆
知识预览 一 Django的form组件 二 Django的model form组件 三 Django的缓存机制 四 Django的信号 五 Django的序列化 回到顶部 一 Django的form ...
- Head First JAVA 拾忆-1
很久之前看得java书籍,现在整理一下当时注意和犯错的知识点. 第一章 基础概念 练习 1 public static void main(){int x = 5;while (x>1) {x ...
- 拾忆Elasticsearch03:SpringBoot整合 Elasticsearch
1. 查看文档 1.1 elasticsearch官方文档 我们进入elasticsearch的官方文档,可以看到一个与客户端相关的东西 进入,可以看到有很多客户端,我们这里使用Java restfu ...
最新文章
- pandas高级处理-数据离散化
- Linux 部署ftp报530 错误解决方案
- python乘法口诀表-用python打印99乘法口诀表
- 用Tableau画幂函数柱状图
- EXCEL——批量生成中国各省省会经纬度JSON的一种方法
- 重磅!阿里云MongoDB 5.0发布,速来围观新特性
- MFC的消息映射有什么作用
- Maven原型创建技巧
- python源代码现成重用大全
- android async socket.io,底层网络协议库 – AndroidAsync
- TypeError: float() argument must be a string or a number, not 'datetime.date'
- python网络编程基础--http
- java获取手机屏幕大小_获取手机屏幕大小
- 电脑内录软件哪个好,你一直都在如何录制电脑内部声音?
- 类抽屉问题的C++解决
- 【C语言】下标法 编写数组元素的输入与输出
- STM32使用大彩串口屏程序框架使用总结
- 经纬度数据计算-JavaScript
- 亚声速 – 超声速等熵喷管流动 数值模拟(文字)
- 硅谷华人AI精英大批回国成趋势,BAT在美设「挖人」据点,猎头暗中潜伏