c# using语句的用法
在net中有一个至关重要的关键字 那就是using
using一般有着以下几种用法
直接引入命名空间
a using System 这个是最常用的 就是using+命名空间 这样就可以直接使用命名空间中的类型 而免去了使用详细的命名空间
b 使用全限定名
不用使用using System;直接在程序中调用System Console WriteLine( Hello C# );
第一种方法是比较常用的方法 可以一次导入整个命名空间到当前命名空间 比较方便
不过如果在当前命名空间只使用一次命名空间中的某个类 例如上例使用全限定名也是合适的
不过在某些情况下必须使用全限定名 比如在引入的两个以上的命名空间中有重名的类 例如System下有一个Console类 在另一个自定义的命名空间MyNamespace中也有一个同名的Console类 这时如果我们在第三个命名空间中同时引入了System和MyNamespace 这时如果要使用某一个具体的Console就需要使用权限定名System Console 或 MyNamespace Console 否则编译器不知道我们具体使用哪一个Console 编译无法通过
using别名 using + 别名 = 包括详细命名空间信息的具体的类型
例如我们用以下语句引入System IO Compression命名空间
using Zip=System IO Compression;这时我们就可以用Zip表示System IO Compression命名空间 使用Zip GZipStream就是使用System IO Compression GZipStream 给程序书写带来方便
这种做法有个好处就是当同一个cs引用了两个不同的命名空间 但两个命名空间都包括了一个相同名字的类型的时候 当需要用到这个类型的时候 就每个地方都要用详细命名空间的办法来区分这些相同名字的类型 而用别名的方法会更简洁 用到哪个类就给哪个类做别名声明就可以了 注意 并不是说两个名字重复 给其中一个用了别名 另外一个就不需要用别名了 如果两个都要使用 则两个都需要用using来定义别名的
例如
using System;using aClass = NameSpace MyClass;using bClass = NameSpace MyClass;
namespace NameSpace {public class MyClass {public override string ToString() {return You are in NameSpace MyClass ;}}}
namespace NameSpace {class MyClass {public override string ToString() {return You are in NameSpace MyClass ;}}}
namespace testUsing{using NameSpace ;using NameSpace ;/// /// Class 的摘要说明 /// class Class {/// /// 应用程序的主入口点 /// [STAThread]static void Main(string[] args){//// TODO: 在此处添加代码以启动应用程序//
aClass my = new aClass(); Console WriteLine(my );bClass my = new bClass();Console WriteLine(my );Console WriteLine( Press any key );Console Read();}}}
using语句 定义一个范围 在范围结束时处理对象
场景
当在某个代码段中使用了类的实例 而希望无论因为什么原因 只要离开了这个代码段就自动调用这个类实例的Dispose 要达到这样的目的 用try catch来捕捉异常也是可以的 但用using也很方便
例如
using (Class cls = new Class () cls = new Class ()){// the code using cls cls
} // call the Dispose on cls and cls
lishixinzhi/Article/program/net/201311/15256