Инициализация массива C# С новые и инициализации с буквальным

Простой Короткий Вопрос В чем именно разница между

int[] intarray = new int[2]{1,2};

и

int[] intarray2 = {4,5,6};

например, что именно делает" новый"? и тебе это действительно нужно?

Я предполагаю, что он просто выделяет память.....или что-то? Извините, я совершенно новичок в C# и у меня есть вопросы, когда я изучаю его.

5 ответов


второй -синтаксис инициализатора массива. Это просто синтаксический сахар. Как инициализировать новые экземпляры массив с соответствующими значениями, первое из которых более явным (вы повторяете, что это целочисленный массив из двух элементов с правой стороны, что довольно очевидно из того, что так компилятор способен выводить эту информацию).

поэтому следующее эквивалент:

int[] array = new int[2] { 1, 2 };

и:

int[] array = { 1, 2 };

и:

var array = new[] { 1, 2 };

во всех случаях мы инициализируем массив из двух целых чисел. Лично я предпочитаю последний синтаксис.


массивы ссылка типа и выделяются с помощью C# new ключевое слово, как и другие ссылочные типы.

один из ваших синтаксисов массива-это просто более короткий синтаксис, также распознаваемый компилятором C# - (есть и другие варианты) оба ваших примера выделяют (new) и инициализируют {elements} для экземпляра массива:

в первой версии явно указывается размер массива.

int[] intarray = new int[2]{1,2};

второй версия позволяет компилятору C# определить размер массива по # элементов в списке инициализации.

int[] intarray2 = {4,5,6};

В общем компилятор C# распознает специализированный синтаксис для объявления и инициализации собственных массивов C#, маскирующих тот факт, что базовый System.Array класс используется.


int[] intarray2 = {4,5,6};

это точно то же самое, что:

int[] intarray2 = new int[] {4, 5, 6};

- это просто более короткая (сокращенная) форма кодирования, на самом деле компилятор выделит памяти тот же кол-во памяти для массива, первый из которых явно не записывает "новый", так же, как когда вы назначаете целое число двойной переменной, вы можете написать приведение или нет (потому что это безопасное приведение), и произведет тот же эффект. пример:

int i = 12;
double d = i;

то же, что:

int i = 12;
double d = (double)i;

это синтаксический сахар.

между ними нет разницы; они будут компилироваться в идентичный IL.
Однако initializier массив может быть использован только для инициализации массива полей или свойств.


http://msdn.microsoft.com/en-us/library/s1ax56ch.aspx

Acc. для этого new просто вызовет конструктор по умолчанию.

int i=new int();

или

int i=0;

такие же.