我遇到了一个奇怪的问题并最终解决了。就像分享这种经验一样,其他人会搜索这个主题并得到答案。 我定义了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文件显式定义命名空间,除了你没有定义命名空间。
答案 0 :(得分:1)
始终明确定义名称空间。