从嵌套类访问类字段

时间:2016-10-08 14:58:14

标签: c# class nested

从嵌套类访问字段的最佳方法是什么?

class FirstClass
{
    public int FirstClassField;
    public FirstClass()
    {
        this.FirstClassField = 5;
    }
    class SecondNestedClass
    {
        int SecondClassField;
        public SecondNestedClass()
        {
            FirstClassField = 6;
        }
    }
}

错误:

  

非静态字段,方法或属性需要对象引用" FirstClass.FirstClassField'

目标是能够使用和修改嵌套类中的FirstClass字段。

就我的目的而言,第一堂课是一个表格

public partial class MyForm : Form

并且传递MyForm的引用是不可能的,因为它是只读的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

嵌套类只是嵌套的类型,与嵌套的实例完全不同。因此,如果您创建SecondNestedClass的实例,则不会涉及FirstClass的实例。那么您要为FirstClass实例设置FirstClassField

SecondNestedClassFirstClass是完全不同且独立的类型。 FirstClassField SecondNestedClass的成员。

与非嵌套类型的唯一区别是允许SecondNestedClass的实例访问private实例的FirstClass个字段。但是你仍然需要一个实例来访问它的字段。

如何解决这个问题取决于你实际想要实现的目标。您可以考虑向FirstClass的构造函数提供SecondNestedClass的实例:

public SecondNestedClass(FirstClass first)
{
    first.FirstClassField = 6;
}