【发布时间】:2010-02-25 14:31:25
【问题描述】:
我想定义一个字符串数组,但我不知道需要在其中存储多少个字符串。我可以定义这样一个数组吗?如何在其中插入字符串?
【问题讨论】:
我想定义一个字符串数组,但我不知道需要在其中存储多少个字符串。我可以定义这样一个数组吗?如何在其中插入字符串?
【问题讨论】:
像这样更好地使用列表:
List<string> names = new List<string>();
names.Add(name); ///whatever string you want to insert
稍后如果您需要名称数组,请调用:
string[] arr = names.ToArray();
如果您必须使用字符串数组,那么您应该预先知道大小。如果你不知道大小,那么你可以初始化一些默认长度的数组(比如 10)。 你必须做的事情是:
所以最好使用列表而不是自己做所有这些事情
【讨论】:
您可以使用List<string>,它会随着您向其中添加项目而扩展。
List<string> myList = new List<string>();
myList.Add("string1");
myList.Add("string2");
如果需要,它可以很容易地转换为数组:
string[] stringArray = myList.ToArray();
如果您不知道需要的确切项目数,数组可能不是一个好的选择,因为您需要调整它的大小(这是一项昂贵的操作)。
【讨论】:
我会使用 List 类。您可以根据需要添加尽可能多的内容,而无需知道要放多少。如果您确实对列表中的内容有所了解,可以使用List 的构造函数的容量参数来防止性能问题。
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 行,以防您出于某种原因确实需要一个数组而不是列表。
请参阅this page,了解您可以使用List 做什么。
【讨论】:
您可以使用以下内容,如上面(或下面)提到的 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();
【讨论】:
使用List<T>。例如
var list = new List<string>();
list.Add("string1");
如果你需要列表是一个数组,List<T> 有一个ToArray() 方法。
在内部List<T> 将数据存储为字符串数组。当需要更多空间时,它将分配一个两倍于当前大小的新数组并将所有引用复制到新数组。 IE。您无需执行任何操作,但如果代码对性能至关重要,您可能希望在创建列表时提供默认容量。
【讨论】:
ArrayList 也可以解决问题。
ArrayList alist = new ArrayList();
alist.Add(String1); alist.Add(String2)
【讨论】: