使用问题,为什么我必须使用global::MyName.SubName

本文关键字:global MyName SubName 问题 为什么 | 更新日期: 2023-09-27 17:59:39

我的解决方案中有一个刚刚添加的库项目,每当我需要引用类/枚举时,我都必须使用:

using global::MyName.SubName;

(Resharper自动提示)

为什么会这样?为什么我不能做:

using MyName.SubName;

这不起作用。即使这样,我也会收到这个错误:

Error   400 Member 'MyName.SubName.Enumerations.SomeEnum.SomeEnumName1' cannot be accessed with an instance reference; qualify it with a type name instead  

使用问题,为什么我必须使用global::MyName.SubName

我只能假设您的MyName.SubName被其他东西隐藏(同名)。

有关更多信息,请参阅以下MS文章:如何:使用全局命名空间别名

我认为这可以解释你遇到的情况。

访问全局命名空间中的成员的功能在以下情况下非常有用该成员可能被另一个同名实体隐藏。

然而,在更大的项目中命名空间重复可能以一种或另一种形式发生。在这些在某些情况下,全局命名空间限定符可以保证可以指定根命名空间。

我同意@kelsey的观点,认为这看起来像是名称空间冲突。解决此问题的另一种方法是使用类似的名称空间别名;

using MNSub = MyName.SubName
// ...else where in code
MNSub.MyType varName = new MNSub.MyType();    // etc.

这至少提供了比global::... 更有意义的语法