有人能告诉我一个简单的方法来分配变量。 我有很多变量而且不知道该怎么做,是否可以使用循环?`
public void SwappingPlaces1()
{
Section_1[0] = Receiver_1[0];
Section_1[1] = Receiver_2[0];
Section_1[2] = Receiver_3[0];
Section_1[3] = Receiver_4[0];
Section_1[4] = Receiver_5[0];
Section_1[5] = Receiver_6[0];
Section_1[6] = Receiver_7[0];
Section_1[7] = Receiver_8[0];
Section_1[8] = Receiver_9[0];
Section_1[9] = Receiver_10[0];
Section_1[10] = Receiver_11[0];
Section_1[11] = Receiver_12[0];
Section_1[12] = Receiver_13[0];
Section_1[13] = Receiver_14[0];
Section_1[14] = Receiver_15[0];
Section_1[15] = Receiver_16[0];
Section_1[16] = Receiver_17[0];
Section_1[17] = Receiver_18[0];
Section_1[18] = Receiver_19[0];
Section_1[19] = Receiver_20[0];
Section_1[n] = Receiver_n[0];
...
}
答案 0 :(得分:1)
您需要使用反射来按名称获取属性/字段的名称。假设Reciever_n
是属性:
var properties = this.GetType().GetProperties();
for(int i = 0; i < n; i++)
{
var p = properties.Single(x => x.Name == "Receiver_" + i);
var value = p.GetValue(this, new object[] { 0 });
}
首先,您将获得在该类型上定义的所有属性。现在,您循环列表并获取名为Receiver_
的当前索引的单个属性。
最后,您在实例上调用该属性并提供索引属性的索引(此处等于零)。
编辑:但是如果有这么多具有相同名称和类型的属性似乎是一个设计缺陷,那么你应该考虑你的实际设计。
因此,更好的appraoch可能只有一个二维数组Receiver
。
答案 1 :(得分:0)
您可以将引用变量添加到数组中并迭代它们。 这是非常有用的,清除gui控件,如文本框/标签等。
var variables = new[] { Receiver_1, Receiver_2, Receiver_3, Receiver_4,
Receiver_5, Receiver_6 };
for(int i=0; i<Section_1.Length;i++)
Section_1[i] = variables[i][0];
但是很容易创建一个超出范围的索引
您也可以使用反射。