熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

新手入門之 Visual C#命名空間詳解

2013-11-13 10:03:44  來源: .NET編程 

  命名空間提供了一種組織相關類和其他類型的方式與文件或組件不同命名空間是一種邏輯組合而不是物理組合在C#文件中定義類時可以把它包括在命名空間定義中以後在定義另一個類在另一個文件中執行相關操作時就可以在同一個命名空間中包含它創建一個邏輯組合告訴使用類的其他開發人員這兩個類是如何相關的以及如何使用它們:

  namespace CustomERPhoneBookApp
  {
   using System;
   public struct Subscriber
   {
    // Code for struct here
   }
  }

  把一個類型放在命名空間中可以有效地給這個類型指定一個較長的名稱該名稱包括類型的命名空間後面是句點()和類的名稱在上面的例子中Subscriber結構的全名是CustomerPhoneBookAppSubscriber這樣有相同短名的不同的類就可以在同一個程序中使用了

  也可以在命名空間中嵌套其他命名空間為類型創建層次結構:

  namespace Wrox
  {
   namespace ProCSharp
   {
    namespace Basics
    {
     class NamespaceExample
     {
      // Code for the class here
     }
    }
   }
  }

  每個命名空間名都由它所在命名空間的名稱組成這些名稱用句點分隔開首先是最外層的命名空間最後是它自己的短名所以ProfessionalCSharp命名空間的全名是WroxProCSharpNamespaceExample類的全名是WroxProCSharpBasicsNamespaceExample

  使用這個語法也可以組織自己的命名空間定義中的命名空間所以上面的代碼也可以寫為:

  namespace WroxProCSharpBasics
  {
   class NamespaceExample
   {
    // Code for the class here
   }
  }

  注意不允許在另一個嵌套的命名空間中聲明多部分的命名空間

  命名空間與程序集無關同一個程序集中可以有不同的命名空間也可以在不同的程序集中定義同一個命名空間中的類型

  using語句

  顯然命名空間相當長鍵入起來很繁瑣用這種方式指定某個特定的類也是不必要的如本章開頭所述C#允許簡寫類的全名為此要在文件的頂部列出類的命名空間前面加上using關鍵字在文件的其他地方就可以使用其類型名稱來引用命名空間中的類型了:

  using System;
  using WroxProCSharp;

  如前所述所有的C#源代碼都以語句using System;開頭這僅是因為Microsoft提供的許多有用的類都包含在System命名空間中

  如果using指令引用的兩個命名空間包含同名的類就必須使用完整的名稱(或者至少較長的名稱)確保編譯器知道訪問哪個類型例如類NamespaceExample同時存在於WroxProCSharpBasics和WroxProCSharpOOP命名空間中如果要在命名空間WroxProCSharp中創建一個類Test並在該類中實例化一個NamespaceExample類就需要指定使用哪個類:

  using WroxProCSharp;
  class Test
  {
   public static int Main()
   {
    BasicsNamespaceExample nSEx = new BasicsNamespaceExample();
    //do something with the nSEx variable
    return ;
   }
  }

  因為using語句在C#文件的開頭C和C++也把#include放在這裡所以從C++遷移到C#的程序員常把命名空間與C++風格的頭文件相混淆不要犯這種錯誤using語句在這些文件之間並沒有真正建立物理鏈接C#也沒有對應於C++頭文件的部分

  公司應花一定的時間開發一種命名空間模式這樣其開發人員才能快速定位他們所需要的功能而且公司內部使用的類名也不會與外部的類庫相沖突本章後面將介紹建立命名空間模式的規則和其他命名約定

  命名空間的別名

  using關鍵字的另一個用途是給類和命名空間指定別名如果命名空間的名稱非常長又要在代碼中使用多次但不希望該命名空間的名稱包含在using指令中(例如避免類名沖突)就可以給該命名空間指定一個別名其語法如下:

  using alias = NamespaceName;

  下面的例子(前面例子的修訂版本)給WroxProCSharpBasics命名空間指定別名Introduction並使用這個別名實例化了一個NamespaceExample對象這個對象是在該命名空間中定義的它有一個方法GetNamespace()該方法調用每個類都有的GetType()方法以訪問表示類的類型的Type對象下面使用這個對象來返回類的命名空間名:

  using System;
  using Introduction = WroxProCSharpBasics;
  class Test
  {
   public static int Main()
   {
    IntroductionNamespaceExample NSEx =new IntroductionNamespaceExample();
    ConsoleWriteLine(NSExGetNamespace());
    return ;
   }
  }

  namespace WroxProCSharpBasics
  {
   class NamespaceExample
   {
    public string GetNamespace()
    {
     return thisGetType()Namespace;
    }
   }
  }


From:http://tw.wingwit.com/Article/program/net/201311/12441.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.