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 { } }