关于范围和实例变量“永远不会分配给”

时间:2014-01-29 17:44:19

标签: c# scope

第一堂课叫EvenBetterValueList(公开):

ValueList _valueList;

public override void AppendAdditionalMenuItems(ToolStripDropDown menu){
    // Stuff
}

private void Menu_MyCustomItemClicked(object sender, EventArgs e){
    // Stuff
}

protected override void SolveInstance(IGH_DataAccess DA){
    // firstList and secondList list<string> declaration
    ValueList _valueList = new ValueList(firstList, secondList);
}

第二个类被称为ValueList(正如你在我的SolveInstance方法中所说的那样。这也是公开的):

骨架是:

    private List<string> _firstList = new List<string>();
    private List<string> _secondList = new List<string>();

    // .. getter setters

    public ValueList(List<string> firstList, List<string> secondList) {
        _firstList.Clear();
        _secondList.Clear();

        // Add vars to global vars

        _firstList.AddRange(firstList);
        _secondList.AddRange(secondList);
    }

有了这个,我计划在类中添加一个私有变量来扩展我的类范围,但是这发生了:

enter image description here

似乎永远不会将_valueList分配给。

这可能会再次成为范围问题吗?

2 个答案:

答案 0 :(得分:0)

而不是:

ValueList _valueList;

尝试:

ValueList _valueList = new ValueList();

如果不调用默认构造函数,则不会分配任何内容。

通过预先分配所有属性,有一个自动默认构造函数。如果您不预先指定它们,则构建一个默认构造函数,将默认值分配给未预先分配的属性。

答案 1 :(得分:0)

您的SolveInstance函数正在创建自己的ValueList实例,其实际名称与您的成员变量_valueList相同。

不要在该功能中重新声明它。

protected override void SolveInstance(IGH_DataAccess DA)
{
    // firstList and secondList list<string> declaration
    _valueList = new ValueList(firstList, secondList);
}