2015-04-23 134 views
0

假設我有4個字符串。通過使用索引for循環訪問變量的名稱

private string string_1, string_2, string_3, string_4; 

然後讓我們說我有一個for循環。我如何通過for循環的索引訪問變量名?這裏是我在說什麼的想法:

for(int i = 0; i < 4; i++) 
{ 
    string_ + i = "Hello, world! " + i; 
} 

我明白,做上述不會編譯。

感謝您的幫助。

+0

改用字典 – prashant

+0

你不能這樣做。如果你想有一個字符串列表,那麼使用'List '類型或字符串數​​組。 – DavidG

+0

我正在閱讀MSDN。就像字典一樣,哈希映射呢? @prashanth – user1460211

回答

-1

將你的字符串放入數組,然後使用for循環遍歷數組。在迭代數組時,請在數組的第i個元素上調用您的命令。

String[ ] array = ["a", "b","c"]; 
for(int i = 0; i < array.length ; i++) 
// print array[i] 
1
string[] hello = new string[4]; 
for(int i = 0; i < 4; i++) 
{ 
    hello[i] = "Hello, world! " + i; 
} 

如果你想有一個可變長度的列表,使用實現ICollection<string>,例如Dictionary<string>HashSet<string>List<string>一個類型。

1

你不能做你所問的 - 至少直接。

您可以先將字符串放入數組中,然後從數組開始工作。

string[] strings = new [] 
{ 
    string_1, 
    string_2, 
    string_3, 
    string_4, 
}; 

for(int i = 0; i < 4; i++) 
{ 
    strings[i] = "Hello, world! " + i; 
} 

Console.WriteLine(string_3); // != "Hello, world! 2" 
Console.WriteLine(strings[2]); // == "Hello, world! 2" 

但是然後原來的string_3沒有改變,雖然它的數組插槽是正確的。

你可以走一步,這樣來做:

Action<string>[] setStrings = new Action<string>[] 
{ 
    t => string_1 = t, 
    t => string_2 = t, 
    t => string_3 = t, 
    t => string_4 = t, 
}; 

for(int i = 0; i < 4; i++) 
{ 
    setStrings[i]("Hello, world! " + i); 
} 

Console.WriteLine(string_3); // == "Hello, world! 2" 

這個工程作爲原本打算 - string_3不會得到更新。雖然這是一個小小的設計,但可能對你有用。