清晰度标签 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();
}
}
所以无论如何我在实践中对 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();
}
}