在部分 class 中声明的变量对第二个部分 class 声明不可见?
Variables declared in partial class not visible to second partial class declaration?
所以我有两个不同的源文件:
file1.cs:
namespace namespace1 {
public partial class Class1 {
public partial class NestedClass {
public int myInt{ get; set; }
}
}
}
file2.cs:
namespace namespace1.Class1 {
public partial class NestedClass {
void doSomething() {
Console.WriteLine(this.myInt); // class does not contain definition for myInt
}
}
}
问题:
我正在尝试访问在第一个部分 class 中声明的成员变量。其他文件看不到我声明的变量。
我的解决方案尝试:
我找到了这个 post,但它似乎没有解决我的问题。我在每个 class 部分文件中声明了几个测试变量,其他文件看不到任何内容。我尝试了 public 和私有变量,有和没有 setters,因为在那种情况下的问题涉及丢失 setter。我想也许我的 classes 命名不正确,所以我三次检查了我的名称空间和 class 名称,发现它们都被声明为部分名称。最后,我也尝试重新启动 Visual Studio,但无济于事。
如有任何帮助,我们将不胜感激!
问题是在您的第一个文件中,您有一个名称空间:
namespace namespace1 {
而第二个是:
namespace namespace1<b>.Class1</b> {
由于 命名空间不同 ,C# 认为 class 也不同 :它们 碰巧具有相同的名称,但由于它们是在不同的命名空间中声明的,C# 认为它们是不同的。
如果你使用部分 nested classes,你应该这样写:
file1.cs
:
namespace namespace1 {
<b> public partial class Class1 {</b>
public partial class NestedClass {
public int myInt{ get; set; }
}
<b> }</b>
}
file2.cs
:
using System;
namespace namespace1 {
<b> public partial class Class1 {</b>
public partial class NestedClass {
void doSomething() {
Console.WriteLine(this.myInt); // class does not contain definition for myInt
}
}
<b> }</b>
}
所以你没有指定外部class作为命名空间,但是你声明外部class两次。
所以我有两个不同的源文件:
file1.cs:
namespace namespace1 {
public partial class Class1 {
public partial class NestedClass {
public int myInt{ get; set; }
}
}
}
file2.cs:
namespace namespace1.Class1 {
public partial class NestedClass {
void doSomething() {
Console.WriteLine(this.myInt); // class does not contain definition for myInt
}
}
}
问题:
我正在尝试访问在第一个部分 class 中声明的成员变量。其他文件看不到我声明的变量。
我的解决方案尝试:
我找到了这个 post,但它似乎没有解决我的问题。我在每个 class 部分文件中声明了几个测试变量,其他文件看不到任何内容。我尝试了 public 和私有变量,有和没有 setters,因为在那种情况下的问题涉及丢失 setter。我想也许我的 classes 命名不正确,所以我三次检查了我的名称空间和 class 名称,发现它们都被声明为部分名称。最后,我也尝试重新启动 Visual Studio,但无济于事。
如有任何帮助,我们将不胜感激!
问题是在您的第一个文件中,您有一个名称空间:
namespace namespace1 {
而第二个是:
namespace namespace1<b>.Class1</b> {
由于 命名空间不同 ,C# 认为 class 也不同 :它们 碰巧具有相同的名称,但由于它们是在不同的命名空间中声明的,C# 认为它们是不同的。
如果你使用部分 nested classes,你应该这样写:
file1.cs
:
namespace namespace1 {
<b> public partial class Class1 {</b>
public partial class NestedClass {
public int myInt{ get; set; }
}
<b> }</b>
}
file2.cs
:
using System;
namespace namespace1 {
<b> public partial class Class1 {</b>
public partial class NestedClass {
void doSomething() {
Console.WriteLine(this.myInt); // class does not contain definition for myInt
}
}
<b> }</b>
}
所以你没有指定外部class作为命名空间,但是你声明外部class两次。