命名空间中的数字

cap*_*gon 2 .net namespaces visual-studio

我在这四个不同的命名空间下有一堆类:

  • abcx
  • 阿西
  • abcz

包含“myEnum”定义的两个类都不直接位于命名空间“ab”下。我在“abcx”和“abcz”中定义了“myEnum”,但出现以下错误:

命名空间“ab”已包含 myEnum 的定义。

为什么是这样?我该如何解决?

编辑:

嗯,我修好了。显然,在命名空间中我不能有像“ab202.x”这样的数字。这就是它所抱怨的。有谁知道为什么?

Ani*_*Ani 6

显然,在命名空间中我不能有像“ab202.x”这样的数字。这就是它所抱怨的。有谁知道为什么?

与您不能声明的原因相同int 202;- 在 C# 中标识符不能以数字开头。

编辑

这是尝试通过重现它来解释您的特定(奇怪)编译器错误。

以下代码:

namespace a.b
{ 
   enum myEnum {}
}     

namespace a.b.202.x
{
   enum myEnum {}
}
Run Code Online (Sandbox Code Playgroud)

因好奇(对我而言)错误而失败:

{ expected  
The namespace 'a.b' already contains a definition for 'myEnum'  
Run Code Online (Sandbox Code Playgroud)

推测其原因是错误的标识符使编译器将第二个命名空间声明视为“格式错误”,而忽略.202.x. 如果是这样,那么编译器确实应该认为第二种myEnum类型在 namespace 中a.b,这当然是重复的。

如果您完全摆脱第一个命名空间(及其中的枚举)并重新编译,您将看到第二个枚举类型的完全限定名称被推断为a.b.myEnum(尽管编译失败)进一步支持这一点)。

在此处输入图片说明