C#中如何强制指定命名空间起始?解决命名空间冲突
解决C#命名空间冲突:直接引用根命名空间类的方法
当然可以不用using语句,直接通过全局命名空间前缀来明确指定要引用的类,完全能解决你遇到的这种嵌套命名空间冲突问题。
C#里提供了global::这个语法,它的作用是强制编译器从根命名空间开始查找类型,不会被当前代码所在的命名空间或者已有的using指令干扰。比如你在A.B命名空间的代码里,要引用B.C.Class3,直接这么写就行:
// 直接用global::指定从根命名空间开始找B.C.Class3 var class3Instance = new global::B.C.Class3();
这个global::就是你想要的类似特殊标识的技术,它是官方原生支持的,专门用来处理这种命名空间重名导致的查找混淆问题。
另外补充个小技巧:如果需要多次引用这个类,也可以在文件顶部给根命名空间起别名(这不算引入命名空间,只是简化写法),比如:
using RootBC = global::B.C;
之后就可以用RootBC.Class3来引用,写起来更简洁。
内容的提问来源于stack exchange,提问作者Mark A Johnson
相关产品推荐
相关产品推荐

