2012-05-07 127 views
1

我想在for語句中創建名爲「Item」的類的新實例,但我不知道如何動態給出名稱。在for循環語句中動態創建屬性名稱

for (i=0; i < Counter; i++) 
{ 
    MyClass "XXXX" = Class.method(); 
} 

如何創建2個字符串並給出名稱? - 用於實例 -

for(i=0;i<2;i++){ 
    string name + i = "Hello" 
} 

EDITED

我已經得到了一些建議,以達到我的解決方案,我可以創造一個字典。

 var bomItems = new Dictionary<Item, Item>(); 

     for (int i = 0; i < Count; i++) 
     { 
      Item bomItem = inn.newItem("Part BOM","add"); 
      bomItems.Add(bomItem + i, bomItem); 
     } 

但是我在「bomItem + i」中得到了一個合理的錯誤。我不能應用操作數'+'。明顯。

有沒有人對此有任何答案?

謝謝。

+0

你採取有關字典? – BlackBear

+2

請在這裏解釋用例。我敢打賭,這不是你真正想要的。 –

+0

那麼,你的問題是什麼? – Rahul

回答

4

您coud使用集合像List<String>

var list = new List<String>(); 
for (i=0; i<Counter; i++){ 
    list.Add("Hello " + i); 
} 

編輯 Accroding您的意見要通過它分配的名稱訪問變量。那麼你應該使用Dictionary來代替(如果名稱是唯一的)。

例如:

var names = new Dictionary<String, String>(); 
for (i=0; i < Counter; i++){ 
    names.Add("Name" + i, "Hello"); 
} 

現在你可以用這種方式給定的字符串鍵的字符串值:

String name10 = names["Name10"]; // "Hello" since all values are "Hello" in your sample 
+0

我想這樣做:「string name + i =」Hello「」 – kmxillo

+0

@kmxillo :如果我正確地理解了你,你可以使用'Dictionary',看看我編輯的答案。 –

+0

是的,你明白了。但它不能將字典從字典轉換爲myClass。 myClass name = new Dictionary (); 謝謝 – kmxillo

5

使用數組!

string[] myArray = new string[Counter]; 
for (int i = 0; i < Counter; i++){ 
    myArray[i] = "Hello"; 
} 
+0

即使對於引用類型對象,數組是否顯着快於列表? –

+3

@JohanLundberg對於微不足道的案件只是略微和可以忽略;請參閱http://stackoverflow.com/questions/454916/performance-of-arrays-vs-lists –

+0

@BalaR我想給變量的名稱爲「你好」值。不引用數組或列表。我以wana給出一個名字爲例:string name =「Hello」,稍後我將能夠通過「名稱」調用該值 – kmxillo

0

另一種方法是使用StringBuilder,像

var builder = new StringBuilder(); 
for (i=0; i<Counter; i++){ 
    builder.Append("Hello " + i); 
} 

和之後如果你需要完整的字符串

builder.ToString()

快速簡單的字符串操作。

1

您可以使用Dictionary (TKey,TValue)類,其中鍵是您想要計算的字符串。

Dictionary<string, string> myDictionary = new Dictionary<string, string>(); 
for (i=0; i < Counter; i++) 
{ 
    myDictionary.Add("XXXX", "Hello"); // Matches your above example 
} 

所以XXXX是你的計數器字符串,你好會是你想要的字符串。那麼你可以檢索每個字符串使用

string myString = myDictionary[XXXX];