C# 关键字--using

using 关键字有两个主要用途:
 
(一).作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。

 
(二).作为语句,用于定义一个范围,在此范围的末尾将释放对象。

using指令
   
①允许在命名空间中使用类型,这样,您就不必在该命名空间中限定某个类型的使用:
            
using System.Text;
            
using PC.Company;
   
②为命名空间或类型创建别名。
              
using MyCompany =
PC.Company;      
//命名空间的别名。
              
using Project = PC.Company.Project;
//类型的别名
    using引入命名空间,并不等于编译器编译时加载该命名空间所在的程序集,程序集的加载决定于程序中对该程序集是否存在调用操作,如果代码中不存在任何调用操作则编译器将不会加载using引入命名空间所在程序集。因此,在源文件开头,引入多个命名空间,并非加载多个程序集,不会造成“过度引用”的弊端。
   
创建别名的另一个重要的原因在于同一文件中引入的不同命名空间中包括了相同名称的类型,如SharpMap.Geometries.Point与System.Drawing.Point。为了避免出现名称冲突,可以通过设定别名来解决:
    using SGPoint =
SharpMap.Geometries.Point;
    using SDPoint =
System.Drawing.Point;
   
尽管我们可以通过类型全名称来加以区分,但是这显然不是最佳的解决方案。用using指令创建别名,有效的解决了这种可能的命名冲突,才是最佳的解决方案。

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();
  }

时间: 2024-11-05 14:21:16

C# 关键字--using的相关文章

JAVA synchronized关键字锁机制(中)

synchronized 锁机制简单的用法,高效的执行效率使成为解决线程安全的首选. 下面总结其特性以及使用技巧,加深对其理解. 特性: 1. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.       2. 当一个线程同时访问object的一个synchronized(this)同步代码块时,其它线程仍然可以访问非修饰的方法或代码块.       3. 当多个线程同时访问object的synchronized(this)同步代码

Java 中几个重要的关键字

Java中的关键字特别多,大致如下: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends final implements interface native new static strictfp synchronized transient volatile 程序控制 break continue return do while if else for instanceof switch case default 异常

RobotFramework自动化测试框架的基础关键字(五)

1.1.1        Run Keyword If判断的使用 Run Keyword If是一个常用的用来做逻辑判断的关键字,意思是如果满足了某一个判断条件,然后就会执行关键字,我们对list3中放入0,1,2三个元素,然后遍历list3,判断当取到元素为0时,我们输出"男生". @{list3} Create List      0     1     2 :FOR       ${value} in    @{list3} Run Keyword If        '${va

this关键字的使用

* this关键字的使用: * 1.this:可以理解为:当前对象 或 当前正在创建的对象 * * 2.this可以用来调用:属性.方法.构造器 * * 3.this调用属性.方法 * 在方法中:我们可以在方法中通过"this.属性"或者"this.方法"的方法,表示调用当前对象的指定属性或方法.但是通常 * 情况下,我们都省略了"this.".但是如果方法的形参和当前对象的属性名相同的情况下,我们必须显式的使用"this.变量&quo

关键字和继承

1.关键字的使用 2.继承

【转】C++中的explicit关键字

在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上.再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决.但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很高的.了解explicit关键字的功能及其使用对于我们阅读使用库是很有帮助的,而且在编写自己的代码时也可以尝试使用.既然C++语言提供这种特性,我想在有些时候这种特性将会非常有用. 按默认规定,只用传一个参数的构造函数也定义了一个隐式转换.举

就是要你懂Java中volatile关键字实现原理

原文地址http://www.cnblogs.com/xrq730/p/7048693.html,转载请注明出处,谢谢 前言 我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用. 本文详细解读一下volatile关键字如何保证变量在多线程之间的可见性,在此之前,有必要讲解一下CPU缓存的相关知识,掌握这部分知识一定会让我们更好地理解volatile的原理,从而更好.更正确地地

abstract关键字

abstract关键字 一,abstract关键字: abstract关键字表示的是抽象的意思,可以用来修饰类和方法.修饰的类我们称之为抽象类,修饰的方法我们称为抽象方法 二.abstract修饰类,抽象类: public abstract class 类名{} 抽象类用来表示一些抽象的概念 抽象类的特点: a.抽象类不能被实例化 b.抽象类中可以有属性,方法,构造方法,都是用来给子类继承 c.抽象类中的方法不一定全部都是抽象方法 三.abstract修饰方法,抽象方法(不需要实现,由子类来实现

this关键字

this关键字 一:this的关键字的用法: 1.调用属性: this.health=100; this.name="小黄"; 2.调用方法: this.print(); 3.调用构造方法 this();--->如果是使用,必须是构造方法中的第一条语句 this("小黑",100,100,"雄"); 二:this关键字的使用方法: 1.调用本类的属性this.属性名: a.可以在构造方法中调用的属性进行赋值 b.可以在本类的方法中调用对象的

Static关键字

1.static修饰的资源属于类级别的资源,静态的资源,对于类的所有实例对象的共享的资源 2.static关键字可以用来修饰属性,方法,代码块 3.static修饰的资源,在类加载期间执行 Static修饰的属性 static关键字修饰属性,属于对类所有实例对象共享的变量 访问静态的属性:类名.属性名 Static修饰的方法 static关键字修饰的方法属于静态方法可以直接类名.方法名()进行调用,一般的是把静态方法作为工具方法 静态方法中不能调用对象的资源(对象属性,对象方法); Static