C# 避免冲突的名称空间-示例?

C# 避免冲突的名称空间-示例?,c#,namespaces,C#,Namespaces,我以前读过,程序员必须为他们的类想出特殊的名称,以便在文件加载到用户PC上时不会与另一个类发生冲突。这就是我不理解的,如果类在例如DLL中,它如何与该PC上的其他类发生冲突 即使没有名称空间,如果我导入一个DLL,我想我也需要从该DLL调用该类,这样我就不能使代码无法编译。 我非常感谢您在这里的解释,谢谢 是对旧问题的一个很好的总结-每个设计都解决了这个问题-因此您无需再担心。考虑是否没有名称空间。然后从程序集中加载类型MyClass。现在,如果您从另一个程序集中加载另一个类型,并且其中有一个M

我以前读过,程序员必须为他们的类想出特殊的名称,以便在文件加载到用户PC上时不会与另一个类发生冲突。这就是我不理解的,如果类在例如DLL中,它如何与该PC上的其他类发生冲突

即使没有名称空间,如果我导入一个DLL,我想我也需要从该DLL调用该类,这样我就不能使代码无法编译。
我非常感谢您在这里的解释,谢谢

是对旧问题的一个很好的总结-每个设计都解决了这个问题-因此您无需再担心。

考虑是否没有名称空间。然后从程序集中加载类型MyClass。现在,如果您从另一个程序集中加载另一个类型,并且其中有一个MyClass。如何加载第二种类型?当你说的时候,如何告诉编译器你想要哪一个

MyClass o = new MyClass() 
答案是——您必须命名名称空间来唯一标识类,否则它是不明确的。那么您说为什么不将名称空间限制在程序集上呢。这很好,但是这似乎是一个非常好的想法,平台的设计者引入了一个概念,任何人都可以在一个程序集中创建多个名称空间,以允许人们更好地划分代码。然后我们问为什么不允许名称空间跨越程序集,这样我们就可以更容易地对代码进行分区

名称空间有很多用途,应用程序设计师需要为您设计一些适合您的东西,即使它只有一个名称空间

示例: 及


因此,如果一个程序引用了两个程序集,而没有名称空间,那么当您声明
点p时,编译器会感到困惑
点p=新点(1,1),例如

我可以在我的命名空间中编写我自己的随机类或列表类,然后我需要原始类符合全名,对吗?但是如果在代码中同时使用命名空间和write Point,哪一个是picekd?如果使用两个名称空间,则必须使用全名,即
System.Drawing.Point p=System.Drawing.Point(1,1)