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

{

//资源销毁;

}

using 用法拾忆的更多相关文章

  1. .Net拾忆:从List去除重复-拾忆集合

    方法1: private static List<int> DistinctList(List<int> list) {//去除重复 HashSet<int> ha ...

  2. #ifdef,#else,#endif,#if 拾忆

    预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短.   ...

  3. .NET拾忆:反射的本质——元数据

    反射主要使用的命名空间: System.Reflection System.Type System.Reflection.Assembly 本质:元数据 反射的本质其实是使用元数据:元数据其实就是程序 ...

  4. Libero 使用拾忆

    使用Libero软件进行管脚分配的时候可以使用脚本语言,详细的使用说明见des_constraints_ug.pdf(在Libero安装目录下寻找) 如: set_io srame_oe -REGIS ...

  5. jquery实现的网页选项卡(拾忆)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Python拾忆--多线程的socket服务器

    阳光明媚的午后,想想最近要开始从写Java到写Python了,就随手打开电脑来体验一下Python与Java之间的不同吧~ 记得我还在上大二的时候,那个时候才开始学Java,最感兴趣的就是Java书最 ...

  7. SQL SERVER 高级编程 - 自定义函数 拾忆

    每个人都很忙,但是花10分钟复习下,总结下基础东西还是很有益处的. 背景: 总结一句,使用简便,还能递归,是的SQL更简洁,相对比一大堆的关联语句,而且关联一大堆还不一定实现特定功能.而且共用部分可以 ...

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

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

  9. Js拾忆

    instanceof运算符:他是判断一个构造函数的prototype是否在对象的原型链上查找到 var a = new Array(); console.log(a instanceof Array) ...

随机推荐

  1. bzoj4819 [Sdoi2017]新生舞会 分数规划+最大费用最大流

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4819 题解 首先上面说, \[ C = \frac{\sum\limits_{i=1}^n a ...

  2. Java动手动脑02

    一.平方数静方法: public class SquareInt { public static void main(String[] args) { int result; for (int x = ...

  3. 2019年8月5日~8月11日 第六周JAVA学习总结

    本周主要进行了对JAVA基础的学习和PTA代码的编写,平均每天花在学习上的时间约3个小时,花在代码上的时间约2个小时,花在解决问题上的时间约1.5个小时. 下周打算继续JAVA的学习,完成java面向 ...

  4. echart--如何将echart的配置项,放到webpack中(CHARTTEMPLATE时)

    1.假如,我们已经写好了组件,我们需要把它放入到一个环境中去 2.首先在index.html中,我们需要写一个dom结构 3.新建一个,chart.js文件(这个里面放组件的代码) 1>开始创建 ...

  5. PHP上传一个文件夹

    该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开始. 如何分 ...

  6. Laya 使list渲染支持分帧的思路

    Laya 使list渲染支持分帧的思路 @author ixenos 2019-09-06 1.由于Laya的list渲染时没有做分帧处理,只做了延迟帧处理,所以当单页元素较多时,会有大量运算卡帧的情 ...

  7. 【PowerOJ1752&网络流24题】运输问题(费用流)

    题意: 思路: [问题分析] 费用流问题. [建模方法] 把所有仓库看做二分图中顶点Xi,所有零售商店看做二分图中顶点Yi,建立附加源S汇T. 1.从S向每个Xi连一条容量为仓库中货物数量ai,费用为 ...

  8. vue 使用props 实现父组件向子组件传数据

    刚自学vue不久遇到很多问题,刚好用到的分组件,所以就用到传递数据 弄了好久终于搞定了,不多说直接上代码 父组件: <template> <headers :inputName=&q ...

  9. 基于modelforms组件实现注册功能

    数据库部分 使用的是auth_user表,添加r_pwd字段后表名变为UserInfo from django.db import models from django.contrib.auth.mo ...

  10. 关于.NET Core的一些问题和疑惑

    1 为什么会出现.NET Core这个东西?即它为了解决什么问题. .NET Core是NET的ECMA标准的一种新的实现.目前.NET已有Framework,Mono,Unity等实现. 原先所有的 ...