我读到这样的方式,程序员必须考虑他们的类的特殊名称,以便在文件加载到用户PC时不与另一个人冲突。这是我不明白的,如果班级在例如DLL,它如何与该PC上的其他类冲突?
即使没有命名空间,如果我导入DLL,我想我需要从该DLL调用该类,因此我无法使代码无法编译。 我真的很感谢这里的解释,谢谢!
答案 0 :(得分:1)
例如: System.Drawing.Point和System.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()
答案 - 您必须命名命名空间以唯一标识该类,否则它是不明确的。所以你说为什么不将名称空间限制在程序集中。这很好,但是看起来这是一个很好的想法,平台的设计者引入了一个概念,任何人都可以在程序集中创建多个名称空间,以便人们更好地划分代码。然后我们问为什么不允许命名空间跨越程序集,以便我们可以更容易地对代码进行分区。
您有很多名称空间用途,应用程序设计师可以为您提供适合您的内容 - 即使它只有一个名称空间。