C#变量赋值

时间:2016-09-16 12:39:40

标签: c# arrays

有人能告诉我一个简单的方法来分配变量。 我有很多变量而且不知道该怎么做,是否可以使用循环?`

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];             
            ...
}

2 个答案:

答案 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];

但是很容易创建一个超出范围的索引

您也可以使用反射。