namespacethis
namespace(命名空間/名稱空間)提供了一種組織相關類和其餘類型的方式。spa
和文件或組件不一樣,namespace是一種邏輯組合,而不是物理組合。在C#文件中定義類時,能夠把它包含在namespace中,在其餘地方訪問的時候即可經過namespace.yourClass訪問此namespace下的類。blog
using System; namespace CustomerPhoneBookApp { public struct Subscriber { // Code for struct here.. } }
namespace和程序集assembly無關;同一個assembly能夠有不一樣的namespace,也能夠在不一樣的assembly有相同的namespace。編譯器
usingstring
在訪問類時,類的全名是namespace + class,名稱比較長;能夠經過using關鍵字引入namspace,而後在正文中就能夠直接使用class。it
若是using語句引用的兩個namespace包含同名的類型,就必須使用完整的名稱。io
假如咱們有個類叫NamespaceExample,在命名空間Wrox.ProCSharp.Basics和Wrox.ProCSharp.OOP下都有這個類,編譯
在開頭對這兩個命名空間的都有引用,此時須要使用全名來告訴編譯器咱們究竟要用的是哪一個命名空間下的NamespaceExample類:class
using Wrox.ProCSharp.OOP; using Wrox.ProCSharp.Basics; namespace Wrox.ProCSharp { class Test { static void Main() { Basics.NamespaceExample nSEx = new Basics.NamespaceExample(); // do something with the nSEx variable. } } }
namespace的別名alias命名空間
using關鍵字的另一個用法就是爲類和命名空間指定別名。若是namespace很長,有須要在代碼中屢次引用,能夠爲這個很長的namesapce指定一個短別名:
using alias = NamespaceName;
能夠經過alias::className來進行定義和調用:
using System; using Introduction = Wrox.ProCSharp.Basics; class Program { static void Main() { Introduction::NamespaceExample NSEx = new Introduction::NamespaceExample(); Console.WriteLine(NSEx.GetNamespace()); } } internal class Introduction { } namespace Wrox.ProCSharp.Basics { class NamespaceExample { public string GetNamespace() { return this.GetType().Namespace; } } internal class Introduction { } }