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 用法拾忆相关推荐

  1. html结构内容拾忆

    html结构内容拾忆 文本格式化: 1 <b>This text is bold</b><!--定义粗体文本.--> 2 <strong>This te ...

  2. 拾忆Elasticsearch04:Elasticsearch实操

    1. 本篇目标 我们在一些电商网站搜索商品时,会搜索到许多相关商品,例如在某宝和某东搜索"Java",会出现以下结果 某宝 某东 可以看到,两边都顺利的搜到符合要求的商品,某东甚至 ...

  3. java毕业设计拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S ...

  4. 计算机毕业设计JAVA拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目 ...

  5. python punctuation_经验拾忆(纯手工)=gt; Python基本数据类型_Python - UCloud云社区...

    数据结构 可变类型与不可变类型(重头戏) 基操: 可变类型:[], {} # 可增删改 查 不可变类型: int float str () # 无法增删改, 只可查 升操: + 与 += 的区别: 也 ...

  6. spring mvc DispatcherServlet详解之拾忆工具类utils

    DispatcherServlet的静态初始化 /*** Name of the class path resource (relative to the DispatcherServlet clas ...

  7. Django组件拾忆

    知识预览 一 Django的form组件 二 Django的model form组件 三 Django的缓存机制 四 Django的信号 五 Django的序列化 回到顶部 一 Django的form ...

  8. Head First JAVA 拾忆-1

    很久之前看得java书籍,现在整理一下当时注意和犯错的知识点. 第一章 基础概念 练习 1 public static void main(){int x = 5;while (x>1) {x ...

  9. 拾忆Elasticsearch03:SpringBoot整合 Elasticsearch

    1. 查看文档 1.1 elasticsearch官方文档 我们进入elasticsearch的官方文档,可以看到一个与客户端相关的东西 进入,可以看到有很多客户端,我们这里使用Java restfu ...

最新文章

  1. pandas高级处理-数据离散化
  2. Linux 部署ftp报530 错误解决方案
  3. python乘法口诀表-用python打印99乘法口诀表
  4. 用Tableau画幂函数柱状图
  5. EXCEL——批量生成中国各省省会经纬度JSON的一种方法
  6. 重磅!阿里云MongoDB 5.0发布,速来围观新特性
  7. MFC的消息映射有什么作用
  8. Maven原型创建技巧
  9. python源代码现成重用大全
  10. android async socket.io,底层网络协议库 – AndroidAsync
  11. TypeError: float() argument must be a string or a number, not 'datetime.date'
  12. python网络编程基础--http
  13. java获取手机屏幕大小_获取手机屏幕大小
  14. 电脑内录软件哪个好,你一直都在如何录制电脑内部声音?
  15. 类抽屉问题的C++解决
  16. 【C语言】下标法 编写数组元素的输入与输出
  17. STM32使用大彩串口屏程序框架使用总结
  18. 经纬度数据计算-JavaScript
  19. 亚声速 – 超声速等熵喷管流动 数值模拟(文字)
  20. 硅谷华人AI精英大批回国成趋势,BAT在美设「挖人」据点,猎头暗中潜伏

热门文章

  1. 什么是光纤收发器,光纤收发器分类,光纤收发器的作用
  2. 分享个被骗10元钱的经历
  3. 计算机网络03:数据链路层
  4. s5pv210_gpio驱动及其在android2.3.1下jni调用~~
  5. 带2nd的计算机软件,2nd在计算器中是什么意思
  6. Sorry, but pdflatex did not succeed
  7. 记录Win10正确安装CUDA和cuDNN的过程(记录一些坑)
  8. 一个游戏账号竟卖到7.5万元!
  9. 关于火狐浏览器无法倍速看百度网盘视频
  10. 23种设计模式——代理模式