未知大小的字符串数组

未知大小的字符串数组

问题描述:

如何在不知道c#.NET数组大小的位置的字符串数组?未知大小的字符串数组

String[] array = new String[]; // this does not work 
+0

可能的重复[如何将字符串添加到字符串\ [\]阵列?没有.Add功能](http://*.com/questions/1440265/how-to-add-a-string-to-a-string-array-theres-no-add-function) – Antonio 2015-09-04 15:33:19

是否有一个特定的原因,你需要使用一个数组?如果你不知道前手的大小,你可能想使用List<String>

List<String> list = new List<String>(); 

list.Add("Hello"); 
list.Add("world"); 
list.Add("!"); 

Console.WriteLine(list[2]); 

会给你

! 

MSDN - List(T)输出以获取更多信息

+0

他们会在我把它们放入命令后添加,所以我可以将它们称为array [int] ... – sv88erik 2009-10-21 21:09:59

+1

它们将按照您添加它们的顺序添加,您可以使用索引器访问它们。编辑答案的例子。 – 2009-10-21 21:11:03

+1

是的,您仍然可以使用数组相同的方式将通用列表中的项目编入索引。 – David 2009-10-21 21:11:27

您不能创建一个没有大小的数组。你需要使用一个列表。

我想你可能正在寻找StringBuilder类。如果没有,那么以字符串形式泛型列表类:

List<string> myStringList = new List<string(); 
myStringList.Add("Test 1"); 
myStringList.Add("Test 2"); 

或者,如果你需要绝对确保琴弦却依次是:

Queue<string> myStringInOriginalOrder = new Queue<string(); 
myStringInOriginalOrder.Enqueue("Testing..."); 
myStringInOriginalOrder.Enqueue("1..."); 
myStringInOriginalOrder.Enqueue("2..."); 
myStringInOriginalOrder.Enqueue("3..."); 

记住,在List类中,物品的顺序是一个实施细节,你不能保证他们将保持在你把它们放入的同一顺序。

+0

他为什么要寻找StringBuilder?这没有意义 – 2009-10-21 21:03:09

+0

它看起来像他试图把几个字符串放在一起。我补充说,如果他想跟踪几个字符串,他可能想使用List类。此外,队列类如果他需要保留订单。 – jasonh 2009-10-21 21:06:33

+1

“与List类,项目的顺序是一个实现的细节,你不能保证他们将保持在你把它们放入的顺序。”这是不正确的。列表保留顺序:如果您执行一系列添加,然后迭代列表,则项目将按您添加它们的顺序排列。 (当然,你可以在列表中间插入项目,对列表进行排序等等,但事情依然按照你的要求进行。)你可能在考虑Dictionary,HashSet等。 – itowlson 2009-10-21 21:12:19

我想如果一个计算值的数组大小。

int size = ComputeArraySize(); 

// Then 

String[] array = new String[size]; 

您可以使用列表字符串,然后当你完成使用strings.ToArray()来获取字符串数组一起工作?

正如其他人已经提到你可以使用List<String>(我同意这将是一个更好的选择)。在您需要的String[](传递给需要它的实例的现有方法),你可以随时检索列表中的数组(这是List<T>'s内部数组的副本)事件是这样的:

String[] s = yourListOfString.ToArray(); 

如果你以后会知道数组的长度,你可以创建初始数组是这样的:

String[] array; 

后来当你知道长度就可以完成初始化像这样

array = new String[42]; 

实例化时,您不必指定数组的大小。

您仍然可以声明数组并稍后将其实例化。例如:

string[] myArray; 

... 

myArray = new string[size]; 

string foo =“Apple,Plum,Cherry”;

string [] myArr = null;

myArr = foo。分裂(',');

+0

不好转换这样的字符串!事实并非如此。 NET拆分(Char())应该这样做!如果输入来自用户呢?你应该首先检查“,”??如果你对一个字符串进行硬编码,那么无论如何你都知道它的大小! :) – sv88erik 2013-09-20 12:18:51

如果你想使用数组不知道大小首先你必须声明它,以后你可以实例化它像

string[] myArray; 
... 
... 
myArray=new string[someItems.count]; 
+0

你见过这个答案!当这是创建?如果你想获得积分,那么我建议你看看新的物品 – sv88erik 2015-03-02 11:19:44

你可以声明空数组像下面

String[] arr = new String[]{}; // declare an empty array 
String[] arr2 = {"A", "B"}; // declare and assign values to an array 
arr = arr2; // assign valued array to empty array 

你不能将值分配给上面的空数组,如下所示

arr[0] = "A"; // you can't do this