Подтвердить что ты не робот

Массив строки с неизвестным размером

Как массив строк, где вы не знаете, где размер массива в С#.NET?

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

Ответ 1

Есть ли конкретная причина, почему вам нужно использовать массив? Если вы не знаете размер перед рукой, вы можете использовать List<String>

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

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

Console.WriteLine(list[2]);

Выдает результат

!

MSDN - List (T) для получения дополнительной информации

Ответ 2

Вам не нужно указывать размер массива при его создании.

Вы все равно можете объявить массив и создать его позже. Например:

string[] myArray;

...

myArray = new string[size];

Ответ 3

Вы не можете создать массив без размера. Для этого вам нужно будет использовать список.

Ответ 4

Как уже упоминалось, вы можете использовать List<String> (который, я согласен, будет лучшим выбором). Если вам понадобится String[] (для перехода к существующему методу, который требует его, например), вы всегда можете получить массив из списка (который является копией внутреннего массива List<T>'s) следующим образом:

String[] s = yourListOfString.ToArray();

Ответ 5

вы можете объявить пустой массив, как показано ниже

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

Ответ 6

Думаю, вы можете искать класс 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 порядок элементов является деталью реализации, и вам не гарантируется, что они останутся в том же порядке, в который вы их ввели.

Ответ 7

Я полагаю, что размер массива, если вычисленное значение.

int size = ComputeArraySize();

// Then

String[] array = new String[size]; 

Ответ 8

Можете ли вы использовать строки List, а затем, когда вы закончите, используйте strings.ToArray(), чтобы получить массив строк для работы с?

Ответ 9

Если вы позже узнаете длину массива, вы можете создать начальный массив следующим образом:

String[] array;

И позже, когда вы знаете длину, вы можете закончить ее инициализацию следующим образом

array = new String[42];

Ответ 10

Если вы хотите использовать массив, не зная размер сначала, вы должны его объявить, а позже вы можете создать его как

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

Ответ 11

string [] array = {};

//он не нулевой, а пустой.

Ответ 12

string foo = "Apple, Plum, Cherry";

строка [] myArr = null;

myArr = foo.Split(',');