Можно ли использовать массивы и обнуляемые типы до того, как они будут объявлены? - PullRequest
1 голос
/ 25 мая 2011

Я цитирую следующие абзацы из книги: Язык программирования C # Четвертое издание

C # поддерживает одно- и многомерные массивы любого типа. В отличие от перечисленных выше типов, массив типы не должны быть объявлены прежде чем они могут быть использованы. Вместо, типы массивов строятся после имени типа с квадратом скобки. Например, int [] является одномерный массив int, int [,] является двумерным массивом int, а int [] [] является одномерный массив одномерные массивы int.

и

Обнуляемые типы также не должны быть объявлено, прежде чем они могут быть использованы. За каждый ненулевой тип значения T там соответствующий обнуляемый тип T ?, который может содержать дополнительную стоимость ноль. Например, int? это тип который может содержать любое 32-битное целое число или значение null.

Как использовать массивы и обнуляемые типы, не объявляя их заранее?

1 Ответ

6 голосов
/ 25 мая 2011

Короткий ответ

Эти цитаты пытаются сказать, что вам не нужно «создавать» (или объявлять ) типы массивов и значений, допускающих значение NULL.Таким же образом вы объявляете пользовательские классы, чтобы использовать их.Они уже доступны как функции языка C #.

Длинный ответ

Если вы хотите объявить массив из int s, просто сделайте это:

int[] intArray = new int[5];

Если вы создали собственный класс, например Foo, и хотите объявить массив объектов Foo, первая цитата говорит, что вам не нужно писать код, чтобы сообщить компилятору отип массива, который может содержать Foo объектов;просто сделайте это, и компилятор вычислит все остальное:

Foo[] fooArray = new Foo[5];

Аналогично, для создания элементов с типами значений, которые могут иметь значение NULL, просто добавьте ? к типу:

int? nullableInt = null;

Кроме того,Выше приведен только синтаксический сахар для структуры Nullable<T>:

Nullable<int> nullableInt = null;

Обратите внимание, что это относится только к типам значений (включая структуры), так как все ссылочные типы (объекты, делегаты,и т. д.) по умолчанию.

...