A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 段永正 黑马帝   /  2012-2-4 14:12  /  2939 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

using的用法

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

5 个回复

倒序浏览
C# 关键字—using
using 关键字有两个主要用途:
(一)作为指令,用于未命名空间创建别名或导入其他命名空间中定义的类型。
(二)作为语句,用于定义一个范围,在此范围的末尾将释放对象。
using指令
1)允许在命名空间中使用类型,这样,你就不必在该命名空间中限定某个类型的使用:
    using System.Text;
    using PC.Company;
2)为命名空间或类型创建别名:
    using MyCommany=PC.Company;//命名空间的别名。
    using SDPoint=System.Drawing.Point;
    尽管我们可以通过类型全名称来加以区分,但是这显然不是最佳的解决方案。用using指令创建别名,有效的解决了这种可能的命名冲突,才是最佳的解决方案。
using语句
    using语句允许程序员指定使用资源的对象应当何时释放资源。using语句中使用的对象必须实现Idisposable接口。此接口提供了Dispose方法,该方法将释放此对象的资源。
1)可以在using语句之中声明对象。
    Font font2=new Font(“Arial”,10.0f);
    {
        //use font2
    }
2)可以在using语句之前声明。
    using(Font font2=new Font(“Arial”,10.0f))
    {
        //use font2
    }
3)可以有多个对象与using语句一起使用,但是必须在using语句内部声明这些对象。
    using(Font font2=new Font(“Arial”,10.0f),font4=new Font(“Arial”,10.0f))
    {
        //use font3 and font4
    }
使用规则:
    1)using只能用于实现了Idisposable接口的类型,禁止为不支持Idisposable接口的类型使用using语句,否则会出现编译错误;
    2)using语句适用于清理单个非托管资源的情况,而多个非托管对象的清理最好以try-finally来实现,因为嵌套的using语句可能存在隐藏的Bug。内层using块引发异常时,将不能释放外层using块的对象资源;
    3)using语句支持初始化多个变量,但前提是这些变量的类型必须相同,例如:
    using(Pen p1=new Pen(Brushers.Black),p2=new Pen(Brusher.Blue))
    {
    //
    }
     4)针对初始化对个不同变量时,可以都声明为Idisposable类型,例如:
    using (Idisposable font=new Font(“Verdana”,12),pen=new Pen(Brusher.Black))
    {
    float size=(font as Font).Size;
    Brush brush=(pen as Pen).Brush;
    }
using实质
    在程序编译阶段,编译器会自动将using语句生产为try-finally语句,例如:
    Font f2=new Font(“Arial”,10,FontStyle.Bold);
    try
    {
    //执行文本绘制操作
   }
    finally
    {
    if(f2!=null)((IDisposable)f2.Dispose();
    }


回复 使用道具 举报
C# 关键字—using
using 关键字有两个主要用途:
(一)作为指令,用于未命名空间创建别名或导入其他命名空间中定义的类型。
(二)作为语句,用于定义一个范围,在此范围的末尾将释放对象。
using指令
○1允许在命名空间中使用类型,这样,你就不必在该命名空间中限定某个类型的使用:
using System.Text;
using PC.Company;
○2为命名空间或类型创建别名:
using MyCommany=PC.Company;//命名空间的别名。
using SDPoint=System.Drawing.Point;
尽管我们可以通过类型全名称来加以区分,但是这显然不是最佳的解决方案。用using指令创建别名,有效的解决了这种可能的命名冲突,才是最佳的解决方案。
using语句
  using语句允许程序员指定使用资源的对象应当何时释放资源。using语句中使用的对象必须实现Idisposable接口。此接口提供了Dispose方法,该方法将释放此对象的资源。
○1可以在using语句之中声明对象。
Font font2=new Font(“Arial”,10.0f);
{
    //use font2
}
○2可以在using语句之前声明。
using(Font font2=new Font(“Arial”,10.0f))
{
    //use font2
}
○3可以有多个对象与using语句一起使用,但是必须在using语句内部声明这些对象。
using(Font font2=new Font(“Arial”,10.0f),font4=new Font(“Arial”,10.0f))
{
    //use font3 and font4
}
使用规则:
○1using只能用于实现了Idisposable接口的类型,禁止为不支持Idisposable接口的类型使用using语句,否则会出现编译错误;
○2using语句适用于清理单个非托管资源的情况,而多个非托管对象的清理最好以try-finally来实现,因为嵌套的using语句可能存在隐藏的Bug。内层using块引发异常时,将不能释放外层using块的对象资源;
○3using语句支持初始化多个变量,但前提是这些变量的类型必须相同,例如:
using(Pen p1=new Pen(Brushers.Black),p2=new Pen(Brusher.Blue))
{
//
}
○4针对初始化对个不同变量时,可以都声明为Idisposable类型,例如:
using (Idisposable font=new Font(“Verdana”,12),pen=new Pen(Brusher.Black))
{
float size=(font as Font).Size;
Brush brush=(pen as Pen).Brush;
}
using实质
在程序编译阶段,编译器会自动将using语句生产为try-finally语句,例如:
Font f2=new Font(“Arial”,10,FontStyle.Bold);
try
{
//执行文本绘制操作
}
finally
{
if(f2!=null)((IDisposable)f2.Dispose();
}
回复 使用道具 举报
1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。
例如:using System; 一般都会出现在*.cs中。
2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。
这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。

3.using语句,定义一个范围,在范围结束时处理对象。
场景:
当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。
要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。
回复 使用道具 举报
同意楼上的解释
回复 使用道具 举报
谢谢楼主~~~~~~~












餐厅吊灯,http://qudouwan.org
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马