Объявлять и инициализировать пустые массивы в C#
Это удобный трюк для работы с возможными пустыми массивами.
Программа C# не может использовать свойства и методы массива, пока не будет создан экземпляр массива. Например, следующий код объявляет массив, а затем пытается использовать его свойства для прокрутки его значений.
// Объявляем массив и пытаемся использовать его свойства.
private void btnDeclare_Click(object sender, EventArgs e)
{
int[] values = null;
try
{
// Это не удается.
for (int i = 0; i < values.Length; i++)
{
MessageBox.Show("Value[" + i + "]: " + values[i]);
}
MessageBox.Show("Done");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Первая инструкция MessageBox.Show терпит неудачу, потому что массив не был создан. (Обратите внимание, что код устанавливает переменную массива равной null. В противном случае компилятор правильно жалуется, что код пытается использовать неинициализированную переменную.)
Вы можете проверить, есть ли values == null, чтобы определить, был ли еще создан массив, но иногда код был бы более последовательным, если бы вы могли использовать его Length GetLowerBound, GetUpperBound и другие члены, чтобы перебрать пустой массив. Это можно сделать, если вы инициализируете массив, чтобы он содержал нулевые записи, как в следующем коде.
int[] values = new int[0];
Теперь массив существует, но пуст. Свойство Length возвращает 0, GetLowerBound возвращает 0, а GetUpperBound возвращает -1. Следующий код похож на предыдущую версию, за исключением того, что он инициализирует массив таким образом, чтобы он работал.
// Объявляем массив и инициализируем его пустым массивом.
private void btnDeclareAndInitialize_Click(object sender,
EventArgs e)
{
int[] values = new int[0];
try
{
for (int i = 0; i < values.Length; i++)
{
MessageBox.Show("Value[" + i + "]: " + values[i]);
}
MessageBox.Show("Done");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
