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

Источник: http://csharphelper.com/blog/2015/08/declare-and-initialize-empty-arrays-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector