命名空间以避免冲突 - 例如?

时间:2010-10-22 09:04:36

标签: c# namespaces

我读到这样的方式,程序员必须考虑他们的类的特殊名称,以便在文件加载到用户PC时不与另一个人冲突。这是我不明白的,如果班级在例如DLL,它如何与该PC上的其他类冲突?

即使没有命名空间,如果我导入DLL,我想我需要从该DLL调用该类,因此我无法使代码无法编译。 我真的很感谢这里的解释,谢谢!

3 个答案:

答案 0 :(得分:1)

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

因此,如果程序引用两个程序集而没有名称空间,则在声明Point p;Point p = new Point(1,1);时,编译器会感到困惑,例如

答案 1 :(得分:0)

DLL Hell, the Inside Story是对旧问题的一个很好的总结 - C#根据设计解决了这个发行人 - 所以你不必再担心了。

答案 2 :(得分:0)

考虑是否没有名称空间。然后从程序集中加载MyClass类型。现在,如果你从另一个程序集加载另一个类型,那里有一个MyClass。你如何加载第二种类型?当你说

时,如何告诉编译器你想要哪一个
MyClass o = new MyClass() 

答案 - 您必须命名命名空间以唯一标识该类,否则它是不明确的。所以你说为什么不将名称空间限制在程序集中。这很好,但是看起来这是一个很好的想法,平台的设计者引入了一个概念,任何人都可以在程序集中创建多个名称空间,以便人们更好地划分代码。然后我们问为什么不允许命名空间跨越程序集,以便我们可以更容易地对代码进行分区。

您有很多名称空间用途,应用程序设计师可以为您提供适合您的内容 - 即使它只有一个名称空间。