2016-09-16 250 views
0

有人能告訴我一個簡單的方法來分配變量。 我有很多變量,真的不知道該怎麼辦,是否有可能使用一個循環?`C#變量賦值

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

使用for循環。 – Mahdi

+7

奇怪的代碼,爲什麼當他們是數組時,爲什麼有這麼多不同的'Receiver []'? –

+0

擁抱OO。你應該創建類來清理混亂。 –

回答

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

但是,一個索引越界被easely創建


您也可以使用反射。

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_加上當前索引的單一屬性。

最後你在實例上調用該屬性並提供索引屬性的索引(在這裏等於零)。

編輯:但是有這麼多屬性與平等的名稱和類型似乎是一個設計缺陷,你應該考慮你的實際設計。

因此,更好的方法可能是隻有一個單一的二維數組Receiver

+3

我不知道爲什麼有經驗的開發人員總是建議反思新手。反思往往表明設計缺乏。爲什麼他有許多不同的'Receiver []',但只使用第一個索引。我想一個陣列就足夠了。或者可能是一個'Dictionary '或類似的東西。但反思是錯誤的。 –

+0

@TimSchmelter公平點。反思並不意味着一個糟糕的設計,然而在這種情況下,這個結論可能適用。 – HimBromBeere