c# using 关键字小结(转)

一、导入其余命名空间或命名空间中定义的类型,这样就能够没必要对类型使用彻底限定名了程序员

       注意:(1) using引入命名空间,并不等于编译器编译时加载该命名空间所在的程序集,程序集的加载决定于程序中对该程序集是否存在调用操做,若是代码中不存在任何调用操做则编译器将不会加载using引入命名空间所在程序集。所以,在源文件开头,引入多个命名空间,并不是加载多个程序集,不会形成“过分引用”的弊端。
        (2)使用using System指令后,一个有趣的结果是,可使用不一样的大小写形式来表示字符串数据类型:String 或者string。前一个版本依赖于using System指令,后一个版本使用string关键字。二者在C#中都合法地引用了System.String数据类型,最终生成的CIL代码毫无区别。spa

        (3)using指令不只能够在文件的顶部声明,还能够在命名空间声明的顶部进行声明。对象

例如:namespace Awl.Michaelis.EssentialCSharp接口

             {             using  System;资源

                       .............字符串

          }编译器

        二者的区别在于:后者的using指令只在你声明的那个命名空间内有效。例如在命名空间Awl.Michaelis.EssentialCSharp的外部又声明了一个新的命名空间,那么新的命名空间不会受到using System指令的影响。string

二、为命名空间或类型建立别名。编译

    例如:using MyCompany = PC.Company;       //命名空间的别名。
               using Project = PC.Company.Project; //类型的别名变量

    注意:为命名空间或类型建立别名一般有如下两个缘由:

        (1) 缩写一个长名称。

        (2)消除同名的两个类型的歧义。

         例如:在于同一文件中引入的不一样命名空间中包括了相同名称的类型,如SharpMap.Geometries.Point与System.Drawing.Point。为了不出现名称冲突,能够经过设定别名来解决:
                using SGPoint = SharpMap.Geometries.Point;
                using SDPoint = System.Drawing.Point;
        尽管咱们能够经过类型全名称来加以区分,可是这显然不是最佳的解决方案。用using指令建立别名,有效的解决了这种可能的命名冲突,才是最佳的解决方案。

2、using做为语句,用于定义一个范围,在此范围的末尾将释放对象。

   一、使用方法

     using 语句容许程序员指定使用资源的对象应当什么时候释放资源。using 语句中使用的对象必须实现 IDisposable 接口。此接口提供了 Dispose 方法,该方法将释放此对象的资源。
    ①能够在 using 语句以前声明对象。
      Font font2 = new Font("Arial", 10.0f);
      using (font2)
      {
          // use font2
      }
    ②能够在 using 语句之中声明对象。
      using (Font font2 = new Font("Arial", 10.0f))
      {
          // use font2
      }
    ③能够有多个对象与 using 语句一块儿使用,可是必须在 using 语句内部声明这些对象。
        using (Font font3=new Font("Arial",10.0f), font4=new Font("Arial",10.0f))
      {
          // Use font3 and font4.
      }

  二、注意事项
   

      ①using只能用于实现了IDisposable接口的类型,禁止为不支持IDisposable接口的类型使用using语句,不然会出现编译错误;
  ②using语句适用于清理单个非托管资源的状况,而多个非托管对象的清理最好以try-finnaly来实现,由于嵌套的using语句可能存在隐藏的Bug。内层using块引起异常时,将不能释放外层using块的对象资源;
  ③using语句支持初始化多个变量,但前提是这些变量的类型必须相同,例如:
        using(Pen p1 = new Pen(Brushes.Black), p2 = new Pen(Brushes.Blue))
      {
          //
      }
       ④针对初始化多个不一样类型的变量时,能够都声明为IDisposable类型,例如:
        using (IDisposable font = new Font("Verdana", 12), pen = new Pen(Brushes.Black))
      {
          float size = (font as Font).Size;
          Brush brush = (pen as Pen).Brush;
      }

   三、using语句的实质

          在程序编译阶段,编译器会自动将using语句生成为try-finally语句,并在finally块中调用对象的Dispose方法,来清理资源。因此,using语句等效于try-finally语句,例如:    Font f2 = new Font("Arial", 10, FontStyle.Bold);  try  {      //执行文本绘制操做  }  finally  {      if (f2 != null) ((IDisposable)f2).Dispose();  }

相关文章
相关标签/搜索