partial class不包含定义

时间:2012-11-07 19:30:17

标签: c# class partial

我遇到了一个奇怪的问题并最终解决了。就像分享这种经验一样,其他人会搜索这个主题并得到答案。 我定义了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中显式定义的命名空间相同。但是对于partial类,编译器不会为partial类提供默认命名空间。这就是编译器在第三方调用foo1.xyz()时抱怨的原因。

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

1 个答案:

答案 0 :(得分:1)

始终明确定义名称空间。