.net中using的几种用途 (平时不容易注意到)

来源:互联网 发布:最经典的网络歌曲 编辑:程序博客网 时间:2024/05/01 09:52
转自张继东朋友的Blog,http://www.cnblogs.com/zhangjidong/
=========================================================================================
今天一个朋友问我using有几种用途,我的第一反应就是茴香豆的4种写法,第2反应是肯定又是个面试题。
先前就是到using可以这样用:
1.引用命名空间,减少冗余代码。
Using System.Web.UI.WebControls;
2.即时释放资源。
Using (TestObject a = new TestObject())  {

// 使用对象

}

//对象资源被释放

不时说有3条吗?立马查了一下sdk
sdk里是这么说的:
=========================================================================================

using 指令有两个用途:
创建命名空间的别名(using 别名)。
允许在命名空间中使用类型,例如,不必限定该命名空间中的类型使用(using 指令)。
using [alias = ]class_or_namespace;
其中:
alias(可选)
希望表示命名空间的用户定义符号。之后,您就可以使用 alias 表示命名空间名。
class_or_namespace
希望使用或为其提供别名的命名空间名,或希望为其提供别名的类名。
备注
创建 using 别名以便更易于将标识符限定到命名空间或类。
创建 using 指令,以便在命名空间中使用类型而不必指定命名空间。using 指令不为您提供对可能嵌套在指定命名空间中的任何命名空间的访问。
命名空间分为两类:用户定义的命名空间和系统定义的命名空间。用户定义的命名空间是在代码中定义的命名空间。有关系统定义的命名空间的列表,请参见 .NET Framework 文档。
有关其他程序集中的引用方法的示例,请参见创建和使用 C# DLL。
示例
下面的示例显示了如何为命名空间定义和使用 using 别名:
// cs_using_directive.cs
using MyAlias = MyCompany.Proj.Nested;  // define an alias to represent a namespace

namespace MyCompany.Proj
{
   public class MyClass
   {
      public static void DoNothing()
      {
      }
   }

   namespace Nested   // a nested namespace
   {
      public class ClassInNestedNameSpace
      {
         public static void SayHello()
         {
            System.Console.WriteLine("Hello");
         }
      }
   }

}

public class UnNestedClass
{
   public static void Main()
   {
      MyAlias.ClassInNestedNameSpace.SayHello();   // using alias
   }
}
输出
Hello
示例
下面的示例显示了如何为类定义 using 指令和 using 别名:
// cs_using_directive2.cs
using System;   // using directive
using AliasToMyClass = NameSpace1.MyClass;   // using alias for a class

namespace NameSpace1
{
   public class MyClass
   {
      public override string ToString()
      {
         return "You are in NameSpace1.MyClass";
      }
   }
}

namespace NameSpace2
{
   class MyClass
   {
   }
}

namespace NameSpace3
{
   using NameSpace1;   // using directive
   using NameSpace2;   // using directive

   class Test
   {
      public static void Main()
      {
         AliasToMyClass somevar = new AliasToMyClass();
         Console.WriteLine(somevar);
      }
   }
}
输出
You are in NameSpace1.MyClass
=========================================================================================
所以再加上一条:
3.创建命名空间的别名(using 别名)。
using MyAlias = MyCompany.Proj.Nested;
“凑”了3条。

 
原创粉丝点击