查了很多文章才明白namespace的概念?但我无法理解。谁能用简单的例子解释命名空间的概念?为什么要导入命名空间?
3 回答
以下是伪代码,希望清楚
namespace1.SomeClass
namespace2.SomeClass
var x = new SomeClass(); //which class are we trying to instantiate?
var y = new namespace1.SomeClass(); //now compiler and everyone else knows
命名空间用于按类别组织对象并控制对象的范围。
有关 .NET 命名空间的更多详细信息:http: //msdn.microsoft.com/en-us/library/0d941h9d
请注意,命名空间概念不仅限于 .NET,还适用于许多编程语言。
为什么选择命名空间?
命名空间用于组织代码。它使您可以组织代码并为您提供一种创建全局唯一类型并避免名称冲突的方法。
例如
假设您Foo
在代码中创建了一个类。在同一个项目中,您正在使用一些第三方库,其中也存在同名的类。在这种情况下,当您引用 class 时Foo
,编译器将无法解析它。但是,这个问题可以通过命名空间来解决。您正在使用的库中的Foo
类属于它的开发人员指定的某个命名空间。(通常,它包含公司名称或唯一标识符)。并且您的Foo
类属于您指定的命名空间。因此,在使用它时,您可以指定类的完全限定名称,例如<Namespace>.Foo
. 这将使编译器更容易解析引用。
此外,您自己可以使用命名空间对类进行分类,以根据其用途对其进行分叉。这将更容易维护。(例如CoreFramework.Foo
,UIHelper.Bar
等...)
为什么要导入命名空间?
现在,在使用类时,您已按名称空间分类。您必须告诉编译器引用类包含在哪个命名空间中。默认情况下,编译器会在同一命名空间中查找类。如果您所引用的类属于另一个命名空间,则您必须指定类的完全限定名称(即Namespace.Foo
),或者您可以在类的开头使用 import 语句通知编译器,该类的代码包含对属于这个命名空间的类。