2009-10-21 133 views
33

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

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

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

回答

61

是否有一個特定的原因,你需要使用一個數組?如果你不知道前手的大小,你可能想使用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

5

您不能創建一個沒有大小的數組。你需要使用一個列表。

1

我想你可能正在尋找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

0

我想如果一個計算值的數組大小。

int size = ComputeArraySize(); 

// Then 

String[] array = new String[size]; 
0

您可以使用列表字符串,然後當你完成使用strings.ToArray()來獲取字符串數組一起工作?

4

正如其他人已經提到你可以使用List<String>(我同意這將是一個更好的選擇)。在您需要的String[](傳遞給需要它的實例的現有方法),你可以隨時檢索列表中的數組(這是List<T>'s內部數組的副本)事件是這樣的:

String[] s = yourListOfString.ToArray(); 
0

如果你以後會知道數組的長度,你可以創建初始數組是這樣的:

String[] array; 

後來當你知道長度就可以完成初始化像這樣

array = new String[42]; 
11

實例化時,您不必指定數組的大小。

您仍然可以聲明數組並稍後將其實例化。例如:

string[] myArray; 

... 

myArray = new string[size]; 
-2

string foo =「Apple,Plum,Cherry」;

string [] myArr = null;

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

+0

不好轉換這樣的字符串!事實並非如此。 NET拆分(Char())應該這樣做!如果輸入來自用戶呢?你應該首先檢查「,」??如果你對一個字符串進行硬編碼,那麼無論如何你都知道它的大小! :) – sv88erik 2013-09-20 12:18:51

0

如果你想使用數組不知道大小首先你必須聲明它,以後你可以實例化它像

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

你見過這個答案!當這是創建?如果你想獲得積分,那麼我建議你看看新的物品 – sv88erik 2015-03-02 11:19:44

3

你可以聲明空數組像下面

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 
相關問題