在部分类中声明的变量对第二个部分类声明不可见?

dak*_*220 2 c# class partial

所以我有两个不同的源文件:

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,但无济于事。

任何帮助将不胜感激!

Wil*_*sem 5

问题是在第一个文件中,您有一个名称空间:

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)

因此,您将外部类指定为名称空间,而是将外部类声明两次。