首页 > 代码库 > 基础知识之 - C# Using的用法

基础知识之 - C# Using的用法

C#里面Using有两种用法:

1.作为指令。

  •  using+命名空间,导入其他命名空间中定义的类型,这样可以在程序中直接用命名空间中的类型,不必指定命名空间;

命名空间是.NET程序在逻辑上的组织结构,而并非实际的物理结构,是一种避免类名冲突的方法,用于将不同的数据类型组合划分的方式。

using System;

 

  •  using + 别名 = 命名空间,为命名空间或类型创建别名。


别名的好处是:当同一个文件下引用了不同的两个命名空间,但这两个命名空间都包括了一个相同名字的类型时,可以用别名的形式引用,这样可以方便使用。 

以using创建别名,有效的解决了这种可能的命名冲突,尽管我们可以通过类型全名称来加以区分,但是这显然不是最佳的解决方案,using使得这一问题迎刃而解,不费丝毫功夫,同时在编码规范上看来也更加的符合编码要求。

using aClass = NameSpace1.MyClass;using bClass = NameSpace2.MyClass;

 

2.作为语句。

  • 于定义一个范围,在此范围的末尾将释放对象,

C# 通过 .Net Framework 公共语言运行库(CLR)自动释放用于存储不再需要的对象的内存。内存的释放具有不确定性;

一旦CLR决定执行垃圾回收,就会释放内存。但是,通常最好尽快释放诸如:文件句柄和网路连接这样的有限资源。

using语句允许指定使用资源的对象应当何时释放。为using语句提供的对象必须实现IDisposable接口。此接口提供了Dispose方法,该方法释放对象的资源。

可以在到达 using 语句的末尾时,或者在该语句结束之前引发了异常并且控制权离开语句块时,退出 using 语句。

using System;class C :IDisposable{    public void UseLimitedResource()    {        Console.WriteLine("Usinglimitedresource...");    }    void IDisposable.Dispose()    {        Console.WriteLine("Disposinglimitedresource.");    }}class Program{    static void Main()    {        using (C c = new C())        {            c.UseLimitedResource();        }        Console.WriteLine("Nowoutsideusingstatement.");        Console.ReadLine();    }}

结果如下:

技术分享

 

  • Dispose方法用于清理对象封装的非托管资源,而不是释放对象的内存,对象的内存依然由垃圾回收器控制。
  •  程序在达到using语句末尾时退出using块,而如果到达语句末尾之前引入异常则有可能提前退出。

 

总结:

using可以用于引入命名空间;用于别名;用于定义资源范围。 

 

基础知识之 - C# Using的用法