Объявлять и инициализировать пустые массивы в 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); } }