2009-07-18 178 views
1

我想在for循環中創建一個var,例如如何在C#中使用動態名稱創建變量?

for(int i; i<=10;i++) 
{ 
    string s+i = "abc"; 
} 

這應該創建變量s0,s1,s2 ...到s10。

+2

您的公司從事什麼語言? – ChrisF 2009-07-18 16:38:45

+0

你的意思是動態類型嗎? – exclsr 2009-07-18 16:40:31

+0

請指定上下文... – 2009-07-18 16:40:58

回答

4

由於您試圖重新定義變量「i」,因此您的第一個示例不適用於任何語言。這是循環控制中的int,但循環體中有string

根據您的更新問題的最簡單方法是使用數組(在C#):如果是在語言的版本

string[] s = new string[10]; 
for (int i; i< 10; i++) 
{ 
    s[i] = "abc"; 
} 
0

使用某種eval

0

這取決於語言。

通常當人們想要這樣做時,正確的做法是使用數據結構,如存儲關鍵名稱和關聯值的散列表/字典/映射。

3

很明顯,這高度依賴於語言。在大多數語言中,它是不可能的。在Javascript中,在瀏覽器中,以下工作:

for (var i = 0; i<10 ; i++) { window["sq"+i] = i * i; } 

現在變量SQ3,例如,設定爲9

3

您可以使用字典。 密鑰 - 對象 價值的動態名稱 - 對象

 Dictionary<String, Object> dictionary = new Dictionary<String, Object>(); 
     for (int i = 0; i <= 10; i++) 
     { 
      //create name 
      string name = String.Format("s{0}", i); 
      //check name 
      if (dictionary.ContainsKey(name)) 
      { 
       dictionary[name] = i.ToString(); 
      } 
      else 
      { 
       dictionary.Add(name, i.ToString()); 
      } 
     } 
     //Simple test 
     foreach (KeyValuePair<String, Object> kvp in dictionary) 
     { 
      Console.WriteLine(String.Format("Key: {0} - Value: {1}", kvp.Key, kvp.Value)); 
     } 

輸出:

Key: s0 - Value: 0 
Key: s1 - Value: 1 
Key: s2 - Value: 2 
Key: s3 - Value: 3 
Key: s4 - Value: 4 
Key: s5 - Value: 5 
Key: s6 - Value: 6 
Key: s7 - Value: 7 
Key: s8 - Value: 8 
Key: s9 - Value: 9 
Key: s10 - Value: 10