2010-10-22 139 views
0

我读过这种方式,程序员不得不为他们的类考虑特殊名称,以便在用户PC上加载文件时不会与另一个名称发生冲突。这是我不明白的,如果班级在例如DLL,它如何与PC上的其他类相冲突?名称空间避免冲突 - 例子?

即使没有名称空间,如果我导入一个DLL,我想我需要从该DLL调用该类,所以我不能使代码无法进行complile。 我真的很感谢这里的解释,谢谢!

回答

0

请考虑是否没有命名空间。然后你从程序集中加载一个类型MyClass。现在,如果从另一个程序集加载另一个类型,并且存在一个MyClass。你如何加载第二种类型?怎么办告诉你要哪一个编译器,当你说

MyClass o = new MyClass() 

答案 - 你要的名字命名空间的唯一标识类,否则它是不明确的。所以你说为什么不把名字空间限制在程序集中。这很好,但看起来这是一个好主意,平台的设计者引入了一个概念,任何人都可以在程序集中创建多个名称空间,以便人们更好地分配代码。然后我们问为什么不允许命名空间穿过程序集,以便我们可以更容易地分割代码。

您对名称空间有很多用途,它取决于您的应用程序设计人员想出一些适用于您的东西 - 即使它只有一个名称空间。

+0

好,所以我可以有点写我自己的Random类或List类在我的命名空间中,然后我将需要原始的全名,对吧?当然是 – CuriousOne 2010-10-22 09:18:16

+0

。完全正确! – 2010-10-22 09:19:45

+0

谢谢,我现在明白了 – CuriousOne 2010-10-22 09:23:06

1

例如: System.Drawing.PointSystem.Windows.Point

所以,如果一个程序引用了两个组件,没有命名空间,编译器会感到困惑,当你声明Point p;Point p = new Point(1,1);,例如

+0

但是,如果您在代码中使用了两个名称空间并写入Point,哪一个是picekd?现在如何使用 – CuriousOne 2010-10-22 09:24:17

+0

如果你使用了两个命名空间,你必须使用全名,即'System.Drawing.Point p = System.Drawing.Point(1,1);' – 2010-10-22 09:32:34