【问题标题】:Variables declared in partial class not visible to second partial class declaration?在部分类中声明的变量对第二个部分类声明不可见?
【发布时间】:2017-05-16 12:30:43
【问题描述】:

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

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

任何帮助将不胜感激!

【问题讨论】:

  • 命名空间不同
  • 第一个部分类作为嵌套类存在,因此我在file2.cs中添加了命名空间。
  • 您实际上应该在 file2 上得到编译器错误,因为 namespace1.Class1 已在 file1 中声明。
  • @Dan 我认为没有必要。我所做的只是根据下面威廉的回答对其进行编辑。我将按原样保留问题和答案。我认为它会像现在这样对未来的观众产生最大的影响。

标签: c# class partial


【解决方案1】:

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

namespace namespace1 {

而第二个是:

namespace namespace1<b>.Class1</b> {

由于 命名空间不同,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
            }

        }

    }
}

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

【讨论】:

  • 现在代码工作了,myInt 的定义不存在的注释是错误的 ;-)
  • 我用这种方式编辑过代码,Visual Studio 还是不喜欢。我编辑了第二个文件的命名空间,并确保它与第一个文件在同一个类中,但我似乎仍然遇到同样的错误。这可能需要一些 Visual Studio 技巧吗?
  • @dak1220:通常不会。你能用代码更新你的问题吗?
  • @WillemVanOnsem 已编辑!
  • @dak1220:我已经编译过了,除了using System; 语句,我没有收到任何错误。
猜你喜欢
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 2011-11-30
相关资源
最近更新 更多