访问使用另一个类中的构造函数创建的实例化对象

时间:2014-01-29 18:29:21

标签: c# class

我有一个代码框架,显示下面的两个类。它是一个简单的实例化,存储在名为_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位于我的第二课。我有一些settersgetters,它会检索字符串等。

我目前尝试的一些事情是private EvenBetterValueList newOne;

尝试newOne.someGetter,在我的第一堂课中声明了一些setter和getter,但可以理解的是,newOnenull,因为它从未实例化,我不想这样做,因为这意味着我正在创建一个新实例而不是在我的第一堂课中访问_valueList

2 个答案:

答案 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