Нет смысла объявлять массив без размера. Массив имеет размер . Когда вы объявляете массив определенного размера, вы указываете фиксированное количество слотов, доступных в коллекции, которая может содержать объекты, и, соответственно, выделяется память. Чтобы что-то добавить к нему, вам в любом случае потребуется повторно инициализировать существующий массив (даже если вы изменяете размер массива, см. Этот поток ). Одним из редких случаев, когда вы хотите инициализировать пустой массив, является передача массива в качестве аргумента.
Если вы хотите определить коллекцию, когда вы не знаете, какого размера она может быть, массив - это не ваш выбор, а что-то вроде List<T>
или аналогичное.
Тем не менее, единственный способ объявить массив без указания размера - это иметь пустой массив size 0 . hemant и Alex Dn предоставляет два способа. Другая более простая альтернатива - просто :
string[] a = { };
[ Элементы в скобках должны быть неявно преобразованы в определенный тип, например, string[] a = { "a", "b" };
]
Или еще один:
var a = Enumerable.Empty<string>().ToArray();
Вот более декларативный способ :
public static class Array<T>
{
public static T[] Empty()
{
return Empty(0);
}
public static T[] Empty(int size)
{
return new T[size];
}
}
Теперь вы можете позвонить:
var a = Array<string>.Empty();
//or
var a = Array<string>.Empty(5);