我有一个代码框架,显示下面的两个类。它是一个简单的实例化,存储在名为_valueList
的实例变量中。
public class EvenBetterValueList : GH_Component
{
ValueList _valueList;
protected override void SolveInstance(IGH_DataAccess DA)
{
// firstList and secondList declarations
_valueList = new ValueList(firstList, secondList);
}
}
public class EvenBetterValueListCustomAttributes : GH_ComponentAttributes
{
// Access the instantiated _valueList from above in this class
}
我有兴趣访问此实例,其名称为_valueList
,位于我的第二课。我有一些setters
和getters
,它会检索字符串等。
我目前尝试的一些事情是private EvenBetterValueList newOne;
尝试newOne.someGetter
,在我的第一堂课中声明了一些setter和getter,但可以理解的是,newOne
是null
,因为它从未实例化,我不想这样做,因为这意味着我正在创建一个新实例而不是在我的第一堂课中访问_valueList
。
答案 0 :(得分:0)
对类的实例变量的访问通常通过属性进行调解 - 它们形成了类提供给外部世界的契约,并允许它调解消费者对其内部的控制程度。
public class EvenBetterValueList : GH_Component
{
ValueList _valueList;
public ValueList ValueList
{
get { return _valueList; }
}
}
将ValueList
作为属性公开后,EvenBetterValueListCustomAttributes
将能够从其中包含的EvenBetterValueList.ValueList
实例访问EvenBetterValueList
的值。< / p>
答案 1 :(得分:0)
要从另一个类访问实例化变量,它需要被标记为public,或者通过公共属性公开,完全按照@ 48klocs提供的答案(首选属性)中所述。
在这种情况下,如果我们正在谈论访问实例级变量(存在于实例化类的范围内),则需要实例化包含类。
或者,对于您的问题中的示例,您将拥有类型为EvenBetterValueList
的实例化对象,并且在某个时刻调用方法SolveInstance
将初始化{{1} }。我注意到该方法受到保护和覆盖,所以可能会发生一些事情来进行调用。然后,如果您有一个暴露该变量的公共属性,您可以通过_valueList
的实例调用它。
断开连接似乎是您想要访问实例级变量,就好像它是类级别(静态)一样。
以下是一些希望更好地可视化我的答案的代码(假设您有一个公开的属性,可以公开EvenBetterValueList
):
_valueList