未知大小的string数组

如何在一个string数组,你不知道在C#.NET中的数组大小?

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

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

 List<String> list = new List<String>(); list.Add("Hello"); list.Add("world"); list.Add("!"); Console.WriteLine(list[2]); 

会给你一个输出

 ! 

MSDN – 列表(T)的更多信息

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

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

 string[] myArray; ... myArray = new string[size]; 

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

正如其他人所提到的,你可以使用List<String> (我同意这将是一个更好的select)。 如果你需要String[] (传递给需要它的现有方法),你总是可以从列表(这是List<T>'s内部数组的拷贝)检索一个数组,像这样:

 String[] s = yourListOfString.ToArray(); 

你可以像下面那样声明一个空的数组

 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 

我想你可能正在寻找StringBuilder类。 如果不是,则以stringforms显示genericsList类:

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

或者,如果您需要绝对确定string保持有序:

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

请记住,使用List类,这些项目的顺序是一个实现细节,并且不保证它们将保持与您放置的顺序相同。

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

 int size = ComputeArraySize(); // Then String[] array = new String[size]; 

你可以使用一个Liststring,然后当你完成使用strings.ToArray()来获取string数组的工作?

如果您稍后将知道数组的长度,可以像这样创build初始数组:

 String[] array; 

稍后当你知道这个长度时,你可以像这样完成初始化

 array = new String[42]; 

如果你想在不知道大小的情况下使用数组,你必须声明它,稍后你可以像实例化它

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

stringfoo =“苹果,李子,樱桃”;

string [] myArr = null;

myArr = foo.Split(',');