【发布时间】:2009-10-21 21:00:34
【问题描述】:
在c#.NET中不知道数组大小在哪里的字符串数组是怎么回事?
String[] array = new String[]; // this does not work
【问题讨论】:
-
在这里找到可能的重复和好的答案:stackoverflow.com/questions/53441268/…
在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 - List(T)了解更多信息
【讨论】:
您不必在实例化数组时指定其大小。
您仍然可以声明数组并在以后实例化它。例如:
string[] myArray;
...
myArray = new string[size];
【讨论】:
您无法创建没有大小的数组。您需要为此使用一个列表。
【讨论】:
正如其他人所提到的,您可以使用List<String>(我同意这是一个更好的选择)。如果您需要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 课程。如果不是,则字符串形式的通用 List 类:
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 类,项目的顺序是一个实现细节,您不能保证它们会保持与您放置它们的顺序相同。
【讨论】:
我假设数组大小是一个计算值。
int size = ComputeArraySize();
// Then
String[] array = new String[size];
【讨论】:
您可以使用 List 字符串,然后在完成后使用 strings.ToArray() 来获取要使用的字符串数组吗?
【讨论】:
如果你以后知道数组的长度,你可以像这样创建初始数组:
String[] array;
当你知道长度后,你可以像这样完成初始化
array = new String[42];
【讨论】:
如果你想在不知道大小的情况下使用数组,你必须先声明它,然后你可以像这样实例化它
string[] myArray;
...
...
myArray=new string[someItems.count];
【讨论】:
字符串[] 数组 = {};
// 不为空,而是为空。
【讨论】:
string foo = "苹果、李子、樱桃";
string[] myArr = null;
myArr = foo.Split(',');
【讨论】: