C#名称空间

名称空间是从C++借鉴而来的概念,它有助于确保在一个特定程序或项目中使用的所有名称是唯一的。程序员在大型项目中缺乏适当的全局名称或者必须使用具有名称冲突的第三方类库这样的情况有时就会出现。例如,您可能在使用C#编写一个大型项目,并且从Bovary Enterprises和Karenina Software购买两个DLL形式的有用类库。这两个库都包含一个名为“SuperString”的类,虽然它们在每个DLL的实现完全不同,但是两个版本对您都有用。幸运的是,这种重复不是个问题,因为这两家公司都遵循了C#名称空间命名规则。Bovary将其Superstring代码放在一个如下示例的名称空间定义中:

Karenina的做法类似:

这两种情况中,首先都是公司名称,后面跟随一个产品名称。在使用这些库的程序中,您可以使用完全合格的名称引用所需的特定的SuperString类:

BovaryEnterprise.VeryUsefulLibrary.SuperString

KareninaSoftware.HandyDandyLibrary.SuperString

是的,虽然键入的字符的数量很多,但它是一种很有效的方法。

如果还没有一种减少键入人工作的方法,那么这种名称空间的特性就相当的不利。这就是using关键字的用途。一旦在using语句指定一个名称空间,您就可以避免通过键入那个空间名称来引用其中的类。下面是另一种形式的C# HelloWorld程序:

对于使用两个不同的SuperString类的项目,using关键字包括了一个非常用帮助的别名特性:

using Emma=Bovary.VeryUsefulLibrary;

using Anna=Karanina.HandyDandyLibray;

现在您可以向这样引用这两个类:

Emma.SuperString

Anna.SuperString

有关using特性的更多细节,请查阅C#语言参考。

.NET Framework定义了90多个以单词System开始的名称空间和5个以单词Microsoft开始的名称空间。本篇最重要的名称空间是System本身。包含许多有关图形的类的Sytem.Drawing和System.Windows.Forms。

名称空间甚至允许您为已经在.NET Framework 中使用类赋予自己的名称。.NET Framework也重用一些类名。例如,它包含三个名为“Timer”的类。您可以以在名称System.Timer、Sytem.Threading和System.Windows.Forms中找到这三个类。

对于没有使用名称空间定义的类(比如我的程序中的ConsoleHelloWorld和ConsoleHelloWithUsing),将出现什么情况呢?那些类名将进入一个“全局名称空间”。对于我的程序这样的自包含的小程序,这不是问题。不过,无论我何时在本篇中定义一个在其他人的程序中有用的类,我将其放在名称空间youhaoxinqin.ProgrammingWindowsWithCsharp中

你可能感兴趣的:(C#)