供参考的清晰度标签类实例

死亡延长者

所以,我还是相当新的C#在实践中无论如何..我花了一些时间学习有关,但实际上在实践中使用它.. MEH。所以这是总体目标

我需要构建“示例”的多个实例,每个实例都应该包含自己的单独列表,该列表跟踪另一个名为 Inputs.. 的类的多个实例,并能够在以后引用它们。我希望有一种方法可以或多或少地标记每个实例,以便我可以通过特定标签调用单个实例。

我的困境:我的类“Example”将被多次实例化,并且每个实例还需要多次实例化另一个类“Input”,基于“_numInputs”变量指示的数量。我会让“示例”类经常检查“_numInputs”,以在“输入”列表中添加或删除“输入”。如何跟踪类的各个实例?如有必要,专门用于删除特定实例。

注意:我已经研究了闭包,根据我的理解,闭包主要侧重于为方法/函数“标记”独特的“类型”......但不是类的实例......如果我错了,你能提供一个我如何标记类的每个实例的简单示例,以便我以后可以直接引用它而不影响同一类的其他实例?

public class Example
{
    public List<Input> inputs = new List<Input>();
    public Example(int numInputs = 1)
    {
        for (int i = 0; i < _numInputs; i++)
        {
            inputs.Add(new Input());
        }
    }
}
马克·格拉维尔

是的,静态字段对于应用程序域是全局的。所以......不要让它静态?它实际上听起来应该是构造函数的一部分,也许默认值为 1 - 所以:

private Input[] _inputs;
public Node(int numInputs = 1) {
    _inputs = new Input[numInputs];
    for(int i = 0 ; i < _inputs.Length ; i++) {
        _inputs[i] = new Input();
    }
}

请注意,由于构造函数是您唯一使用此数字的时间,因此没有必要为每个实例存储它。您当然可以通过以下方式将其暴露给外部世界:

public int InputCount => _inputs.Length;

请注意,这仅在实例化时“输入”的数量固定时才有效。如果不是,那么坦率地说:使用列表:

private List<Input> _inputs = new List<Input>();
public Node() {} // not strictly needed unless there is another constructor somewhere

如果问题是字段初始化顺序,则根据评论反馈进行编辑:

private int _numInputs;
private Input[] _inputs;

public Example() {
    _numInputs = 1;
    _inputs = new Input[_numInputs];
    for(int i = 0; i < _inputs.Length; i++) {
        _inputs[i] = new Input();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章