如何在c#
的循环中声明多个变量名有没有办法按循环声明n个字符串
我不必使用array..please如果可以在没有数组的情况下完成,那么请告诉它对我很有帮助
例如: -
String st1 = "";
String st2 = "";
String st3 = "";
String st4 = "";
String st5 = "";
如果有任何办法,请帮助
答案 0 :(得分:3)
好吧,如果我正确解释您的问题,您可以声明array
或list
,然后在循环中初始化这些elements
例如(数组)(如果你想要一个固定数量的元素):
int n = 10; // number of strings
string[] str = new string[n]; // creates a string array of n elements
for (int i = 0; i < n; i++) {
str[i] = ""; // set the value "" at position i in the array
}
(list)(如果你不想要修复数量的元素)
using System.Collections.Generic;
...
int n = 10;
List<string> str = new List<string>(); // creates a list of strings
// List<string> str = new List<string>(n) to set the number it can hold initially (better performance)
for (int i = 0; i < n; i++) {
list.Add(""); // if you've set an initial capacity to a list, be aware that elements will go after the pre allocated elements
}
list[0] = "hello world"; // how to use a List
list[list.Count - 1] = "i am the last element"; // list.Count will get the total amount of elements in this list, and we minus 1 to fix indexing
答案 1 :(得分:3)
如果您不知道需要多少个字符串,请使用List<string>
List<string> strList = new List<string>();
for (int i = 0; i < loopTotal; i++)
{
string s = "foo";
strList.Add(s);
}
当您使用List
时,您可以拥有一组变量,而无需定义计数。你可以在0和(在这里插入最大数字)之间的任何地方。
如果你做知道你需要多少个字符串,你可以使用string[]
的asray:
string[] Array = new string { "", "", "", "", "" };
foreach (int i = 0; i < Array.Count(); i++)
{
Array[i] = "foo";
}
这可确保数组中的每个项都有值。但是,作为已定义的列表,您可能希望使用foreach
,它将使用Array计数作为循环计数器:
foreach (string s in Array)
{
Array[s] = "foo";
}
答案 2 :(得分:2)
将这些值添加到集合中......
String s1 = "text";
var c = new List<string>(new [s1]);
然后循环。 Vars仍然是明确的,但你从集合中引用它们。
或者,您可以查看反射msdn example。通常,反射对性能来说并不是很好。
出于好奇,最好知道为什么不允许使用数组。
编辑:这包括根据评论的集合初始化程序的示例。不同的集合具有不同的构造函数,但是list允许您传递一个可以使用它来启动它。此示例创建一个内联数组以添加到集合中。