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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 右哼哼 中级黑马   /  2014-1-8 10:03  /  1464 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 右哼哼 于 2014-1-9 16:43 编辑

请问using有什么含义,他是怎样使用的?求解!!谢谢

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

6 个回复

倒序浏览
1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。
例如:using System; 一般都会出现在*.cs中。

2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。
这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。
例如:
  1. using System;
  2. using aClass = NameSpace1.MyClass;
  3. using bClass = NameSpace2.MyClass;

  4. namespace NameSpace1
  5. {
  6.     public class MyClass
  7.     {
  8.         public override string ToString()
  9.         {
  10.             return "You are in NameSpace1.MyClass";
  11.         }
  12.     }
  13. }

  14. namespace NameSpace2
  15. {
  16.     class MyClass
  17.     {
  18.         public override string ToString()
  19.         {
  20.             return "You are in NameSpace2.MyClass";
  21.         }
  22.     }
  23. }

  24. namespace testUsing
  25. {
  26.     using NameSpace1;
  27.     using NameSpace2;
  28.     /// <summary>
  29.     /// Class1 的摘要说明。
  30.     /// </summary>
  31.     class Class1
  32.     {
  33.         /// <summary>
  34.         /// 应用程序的主入口点。
  35.         /// </summary>
  36.         [STAThread]
  37.         static void Main(string[] args)
  38.         {
  39.             //
  40.             // TODO: 在此处添加代码以启动应用程序
  41.             //
  42.             
  43.             aClass my1 = new aClass();            
  44.             Console.WriteLine(my1);
  45.             bClass my2 = new bClass();
  46.             Console.WriteLine(my2);
  47.             Console.WriteLine("Press any key");
  48.             Console.Read();
  49.         }
  50.     }
  51. }
复制代码

3.using语句,定义一个范围,在范围结束时处理对象。
场景:
当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。
要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。
  1. using (Class1 cls1 = new Class1(), cls2 = new Class1())
  2. {
  3.   // the code using cls1, cls2


  4. } // call the Dispose on cls1 and cls2
复制代码


这里触发cls1和cls2的Dispose条件是到达using语句末尾或者中途引发了异常并且控制离开了语句块。


这里的内容摘自博客园 Windsails 的文章。
原文http://www.cnblogs.com/windsails/archive/2004/09/12/42444.html
多多学习。

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
using的使用主要是用于资源的释放:
具体用于:
1、关于数据库的操作中
using(...)
                {
                        ...
                        conn.Open();
                        cmd.Enecute...();
                }
2、文件操作多线程
using (StreamWriter writer = new StreamWriter(stream, encoding))
{
      writer。。。
}

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
using 关键字有两个主要用途:
作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。
作为语句,用于定义一个范围,在此范围的末尾将释放对象。
下面的示例演示如何使用 using 语句
using (System.IO.StreamReader sr = new System.IO.StreamReader(@"C:\Users\Public\Documents\test.txt"))
{
    string s = null;
    while((s = sr.ReadLine()) != null)
    {
        Console.WriteLine(s);
    }
}
File 和 Font 是访问非托管资源(本例中为文件句柄和设备上下文)的托管类型的示例。有许多其他类别的非托管资源和封装这些资源的类库类型。所有这些类型都必须实现 IDisposable 接口。

按照规则,当使用 IDisposable 对象时,应在 using 语句中声明和实例化此对象。using 语句按照正确的方式调用对象上的 Dispose 方法,并(在您按照前面所示方式使用它时)会导致在调用 Dispose 时对象自身处于范围之外。在 using 块中,对象是只读的并且无法进行修改或重新分配。

using 语句确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此。通过将对象放入 try 块中,并在调用 finally 块中的 Dispose,可以获得相同的结果;实际上,这就是编译器转换 using 语句的方式。前面的代码示例在编译时将扩展到以下代码(请注意,使用额外的大括号为对象创建有限范围):

{
  Font font1 = new Font("Arial", 10.0f);
  try
  {
    byte charset = font1.GdiCharSet;
  }
  finally
  {
    if (font1 != null)
      ((IDisposable)font1).Dispose();
  }
}

可以将多个对象与 using 语句一起使用,但必须在 using 语句中声明这些对象,如以下示例所示:
using (Font font3 = new Font("Arial", 10.0f),
            font4 = new Font("Arial", 10.0f))
{
    // Use font3 and font4.
}
可以实例化资源对象,然后将变量传递给 using 语句,但这不是最佳做法。在这种情况下,该对象将在控制权离开 using 块之后保持在范围内,即使它可能将不再具有对其非托管资源的访问权也是如此。换句话说,再也不能完全初始化该对象。如果试图在 using 块外部使用该对象,则可能导致引发异常。由于这个原因,通常最好是在 using 语句中实例化该对象并将其范围限制在 using 块中。
Font font2 = new Font("Arial", 10.0f);
using (font2) // not recommended
{
    // use font2
}
// font2 is still in scope
// but the method call throws an exception
float f = font2.GetHeight();

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
1.引入命名空间
2.释放IDisposable 接口的资源对象

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
主要是对非托管资源的自动释放,用它括起来的不用手动释放,当然前提是资源实现了IDispose接口;还有就是命名空间的导入
回复 使用道具 举报
using关键字主要是为了对实现了IDisposable 接口进行资源释放,从而及时的把内存中的数据清理掉,只有实现了IDisposable接口的才可以使用using;这在数据库操作里面经常用到,我的建议是尽量用using,除非特殊情况,。、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马