C#中using有三种用法:

1. 引入命名空间

2. 创建别名

3. 定义范围,强制资源清理

下面从这三个角度来谈谈using的应用。

(1)引入命名空间:using + 空间名,类似于java的import,C++的include。命名空间是一种避免类名冲突的方法,用于将不同的数据类型组合划分的方式。例如,在.NET中

很多的基本类型都位于System命名空间,数据操作类型位于System.Data命名空间。

(2)创建别名:using + 别名 = 包括详细命名空间信息的具体类型。当两个不同的命名空间中都包含了一个相同名字的类型,则在使用该类型时需要加上详细的命名空间来区别。通过using创建别名可以避免该问题。

using System;
using aClass = NameSpace1.MyClass;
using bClass = NameSpace2.MyClass;
namespace NameSpace1
{public class MyClass {public override string ToString() {return "You are in NameSpace1.MyClass";}}
}namespace NameSpace2
{class MyClass {public override string ToString() {return "You are in NameSpace2.MyClass";}}
}namespace testUsing
{using NameSpace1;using NameSpace2;class Class1{static void Main(string[] args){aClass my1 = new aClass();Console.WriteLine(my1);bClass my2 = new bClass();Console.WriteLine(my2);Console.WriteLine("Press any key");Console.Read();}}
}

(3)定义范围,在范围结束后清理资源:using语句提供了一个脉络清晰的机制来控制资源的生存期,创建的对象会在using语句结束时被摧毁,以下代码说明了using的机制:

using(TextReader reader=new StreamReader(filename))
{string line;while((line=read.ReadLine())!=null){Console.WriteLine(line);}
}
等价于:
{TextReader reader=new StreamReader(filename);try{string line;while((line=read.ReadLine())!=null){Console.WriteLine(line);}}finally{if(reader!=null){(IDisposible)reader.Dispose();}}
}
using是在出了作用域以后调用Dispose方法,在Dispose方法内部会自动调用Close方法。

最新文章

  1. Oracle数据库联邦,使用联邦数据库将oracle表迁移到DB2(9.7)中的脚本说明
  2. golang源码分析:defer流程分析
  3. 三甲医院副主任博士医师,工资竟然不如程序员老公的一半!
  4. POJ 1170 Shoping Offers(IOI 95)
  5. java 中调用window系统中的文件,或者执行命令(shell、.CMD、.EXE)并获取返回值
  6. 【Linux开发】彻底释放Linux线程的资源
  7. 《Deep Learning With Python second edition》英文版读书笔记:第十一章DL for text: NLP、Transformer、Seq2Seq
  8. 计算机专业毕业生管理制度,管理制度建设
  9. PostgreSQL 行变列的小应用
  10. 20191015:基数排序法
  11. 【剑指 offer】(十三)—— 在 O(1) 时间删除链表结点
  12. 蓝牙耳机测试软件apk_蓝牙耳机弹窗app下载-蓝牙耳机弹窗软件v3.1.0安卓版_5577安卓网...
  13. C++ 结构体内存对齐
  14. vba代码换行的写法总结
  15. UML复习资料 软件建模技术选择 仅供参考】
  16. C语言将图片转化成Base64码
  17. 美颜SDK免费版怎么样?应该如何选择美颜SDK?
  18. LBS-手机定位应用
  19. 基于Matlab的静电场仿真实验--求均匀带电球壳的电场
  20. 知名开发社区:v2ex域名DNS被污染

热门文章

  1. bzoj 1202: [HNOI2005]狡猾的商人(带权并查集)
  2. labelme批量转换json
  3. MyBB论坛兼容智能手机的解决方案
  4. [debug] you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake ……
  5. matlab2c使用c++实现matlab函数系列教程-normpdf函数
  6. 汇编 一星题目字符串合集:输入字符,操作,在屏幕上显示
  7. 修改本地文件存储路径
  8. jmeter中特殊的时间处理方式
  9. 虹软AI 人脸识别SDK接入 — 性能优化篇(多线程)
  10. 消息持续积压几小时怎么办