我想定义一个字符串数组,但我不知道我需要存储在其中的字符串数量。我可以定义这样的数组吗?如何在其中插入字符串?
答案 0 :(得分:9)
更好地使用这样的列表:
List<string> names = new List<string>();
names.Add(name); ///whatever string you want to insert
稍后如果您需要一系列名称,请致电:
string[] arr = names.ToArray();
如果必须使用字符串数组,那么您应该事先知道大小。如果你不知道大小,那么你可以初始化一些默认长度的数组(比如10)。 你要做的事情是:
所以最好使用list而不是自己做所有这些事情
答案 1 :(得分:6)
您可以使用List<string>
,这会在您向其添加项目时展开。
List<string> myList = new List<string>();
myList.Add("string1");
myList.Add("string2");
如果需要,可以很容易地将其转换为数组:
string[] stringArray = myList.ToArray();
如果您不知道所需的确切项目数,则数组可能不是一个好选择,因为您需要调整它的大小(这是一项昂贵的操作)。
答案 2 :(得分:0)
我会使用List类。您可以根据需要添加,而无需知道您将放入多少。如果您对列表中的内容有所了解,可以使用List
构造函数的capacity参数来防止性能问题。
int capacity = 3;
var listOfNames = List<string>(/* optional */ capacity);
listOfNames.Add("My Name 1");
listOfNames.Add("My Name 2");
listOfNames.Add("My Name 3");
var namesArray = listOfNames.ToArray();
我在那里添加了namesArray
行,以防你出于某种原因确实需要数组而不是List。
请参阅this page,了解使用List
可以做些什么。
答案 3 :(得分:0)
您可以使用以下内容,如上面提到的Oded(或下面),当项目添加到它时它会自动扩展。
List<String> l = new List<String>();
l.Add("your string here");
...如果你想迭代,那么:
foreach(string i in l)
{
// Do something with each item (i);
}
......还有一个数组:
String[] a =
l.ToArray();
答案 4 :(得分:0)
使用List<T>
。 E.g。
var list = new List<string>();
list.Add("string1");
如果您需要将列表作为数组,List<T>
具有ToArray()
方法。
内部List<T>
将数据存储为字符串数组。当需要更多空间时,它将分配一个当前大小的两倍的新数组,并复制对新数组的所有引用。即您不必执行任何操作,但如果代码对性能至关重要,则可能需要在创建列表时提供默认容量。
答案 5 :(得分:0)
ArrayList也可以做到这一点。
ArrayList alist = new ArrayList();
alist.Add(字符串1); alist.Add(String2的)