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

时间:2017-05-16 12:30:43

标签: c# class partial

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

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
         }
    } 
}

问题:

我正在尝试访问第二个第一个分部类中声明的成员变量。我声明的变量都不能从其他文件中查看。

我尝试解决方案:

我发现了这个post,但它似乎没有解决我的问题。我在每个部分类文件中声明了几个测试变量,而另一个文件中没有任何内容可见。我尝试了公共和私有变量,有或没有setter,因为在那种情况下的问题涉及缺少setter。我想也许我的类名称不正确,所以我检查了我的名称空间和类名,并且它们都被声明为部分名称。最后,我也试过重启Visual Studio,但没有用。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

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

namespace namespace1 {

而在第二个是:

namespace namespace1.Class1 {

由于名称空间不同,C#认为类也不同:它们发生具有相同的名称,但是这些在不同的命名空间中声明,C#认为它们是不同的。

如果您使用部分嵌套类,则应将其编写为:

<强> file1.cs

namespace namespace1 {

    public partial class Class1 {

        public partial class NestedClass {

             public int myInt{ get; set; }

        }
    }
}

<强> 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
            }

        }

    }
}

所以你做将外部类指定为命名空间,但你声明外部类两次。