.net中using的幾種用途 (平時不容易注意到)

轉自張繼東朋友的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條。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章