所以我有两个不同的源文件:
file1.cs:
namespace namespace1 {
public partial class Class1 {
public partial class NestedClass {
public int myInt{ get; set; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
file2.cs:
namespace namespace1.Class1 {
public partial class NestedClass {
void doSomething() {
Console.WriteLine(this.myInt); // class does not contain definition for myInt
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
我正在尝试访问第二个局部类中声明的成员变量。我声明的变量无法从其他文件查看。
我对解决方案的尝试:
我找到了这篇文章,但似乎并没有解决我的问题。我在每个部分类文件中声明了几个测试变量,而其他文件看不到任何变量。我尝试使用带和不带setter的公共变量和私有变量,因为这种情况下的问题涉及缺少setter。我以为也许我的类命名不正确,所以我对命名空间和类名进行了三重检查,并且它们都被声明为局部的。最后,我也尝试过重新启动Visual Studio,但无济于事。
任何帮助将不胜感激!
问题是在第一个文件中,您有一个名称空间:
namespace namespace1 {
Run Code Online (Sandbox Code Playgroud)
而第二个是:
namespace namespace1.Class1 {Run Code Online (Sandbox Code Playgroud)
由于名称空间不同,因此C#认为这些类也不同:它们恰好具有相同的名称,但是由于它们是在单独的名称空间中声明的,因此C#认为它们是不同的。
在使用部分嵌套类的情况下,应这样编写:
file1.cs:
namespace namespace1 {
public partial class Class1 {
public partial class NestedClass {
public int myInt{ get; set; }
}
}
}Run Code Online (Sandbox Code Playgroud)
file2.cs:
using System;
namespace namespace1 {
public partial class Class1 {
public partial class NestedClass {
void doSomething() {
Console.WriteLine(this.myInt); // class does not contain definition for myInt
}
}
}
}Run Code Online (Sandbox Code Playgroud)
因此,您不将外部类指定为名称空间,而是将外部类声明两次。