清晰度标签 Class 个参考实例

Clarity Labeling Class Instances for Reference

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

我需要构建 "Example" 的多个实例,每个实例都应包含自己的单独列表,该列表跟踪另一个 class 的多个实例,称为 Inputs.. 并能够在以后引用他们。我希望有一种方法可以或多或少地标记每个实例,这样我就可以通过特定标签调用各个实例。

我的困境:我的class"Example"会被多次实例化,每个实例都需要同时实例化另一个class"Input" 多次,基于“_numInputs”变量指示的数字。我会让 "Example" class 每隔一段时间检查“_numInputs”,以便在 "inputs" 列表中添加或删除 "Inputs"。如何跟踪 class 的各个实例?专门用于在必要时删除特定实例。

注意:我研究了闭包,根据我的理解,闭包主要集中在 "labeling" 独特的 "types" 到 methods/functions ...但不是 class 的实例。如果我错了,您能否提供一个简单的示例,说明我如何标记 class 的每个实例,以便我可以引用它稍后直接而不影响相同 class 的其他实例?

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;

请注意,这仅在 "inputs" 的数量在实例化时固定的情况下才有效。如果不是,那么坦率地说:使用列表:

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();
    }
}