从嵌套类访问字段的最佳方法是什么?
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
的引用是不可能的,因为它是只读的。
有什么想法吗?
答案 0 :(得分:0)
嵌套类只是嵌套的类型,与嵌套的实例完全不同。因此,如果您创建SecondNestedClass
的实例,则不会涉及FirstClass
的实例。那么您要为FirstClass
实例设置FirstClassField
?
SecondNestedClass
和FirstClass
是完全不同且独立的类型。 FirstClassField
不是SecondNestedClass
的成员。
与非嵌套类型的唯一区别是允许SecondNestedClass
的实例访问private
实例的FirstClass
个字段。但是你仍然需要一个实例来访问它的字段。
如何解决这个问题取决于你实际想要实现的目标。您可以考虑向FirstClass
的构造函数提供SecondNestedClass
的实例:
public SecondNestedClass(FirstClass first)
{
first.FirstClassField = 6;
}