1

我遇到了一个奇怪的问题,终于解决了。就像分享这个经验一样,其他人会搜索这个主题并得到答案。我定义了 2 个部分类,并编译时出现“不包含...的定义”的错误。这很奇怪,因为当 2 个班级是单独的班级时它起作用了。

这是代码:

之前:Foo1.cs

public class foo1{public void xyz(){}}

Foo2.cs

public class foo2{}

之后:Foo1.cs

public partial class foo1{  public void xyz(){}}

Foo2.cs

public partial class foo1{}

编译说“MyNamespace.foo1 不包含 xyz 的定义”。但是上课不偏的时候xyz还是不错的!这可能是由不同的命名空间引起的。但我对此表示怀疑。因为如果命名空间不同,它将无法编译。

我终于想通了。问题出在 Foo1.cs 中,命名空间未定义,但在 Foo2.cs 中定义。在我定义分部类之前,编译器为 Foo1.cs 提供了一个默认命名空间,这与在 Foo2.cs 中显式定义的命名空间相同。但是对于分部类,编译器不会为分部类提供默认命名空间。这就是为什么当第三方调用 foo1.xyz() 时编译器会抱怨。

我学到了总是为每个单独的 cs 文件显式定义命名空间的教训,除了你没有定义命名空间。

4

1 回答 1

1

始终明确定义命名空间。

于 2012-11-09T06:12:11.253 回答