Книга: C# для профессионалов. Том II

Оператор new

Оператор new

Оператор new имеет совершенно другое значение в C#, чем в C++. В C++ new указывает на запрос памяти из кучи. В C# new означает просто, что вызывается конструктор переменной. Однако действие аналогично в той степени, что если переменная имеет ссылочный тип то вызов ее конструктора будет неявно означать, что память выделяется в куче. Например, предположим, что имеется класс MyClass и структура MyStruct. В соответствии с правилами C# экземпляры MyClass всегда будут храниться в куче, а экземпляры MyStruct в стеке.

MyClass Mine; // Просто объявляем ссылку. Аналогично объявлению
              // неинициализированного указателя в C++
Mine = new MyClass(); // создает экземпляр MyClass. Вызывает
                      // конструктор без параметров, в процессе этого
                      // выделяет память в куче
MyStruct Struct; // создает экземпляр MyStruct, но не вызывает
                 // никакого конструкторе. Поля в MyStruct
                 // будут неинициализированы
Struct = new MyStruct(); // вызывает конструктор, поэтому
                         // инициализирует поля, но не выделяет
                         // никакой памяти, так как Struct уже
                         // существует в стеке

Можно использовать new для того, чтобы вызвать конструктор для предопределенных типов данных:

int X = new int();

Это имеет такой же результат, как:

int X = 0;

Отметим, что это то же самое, что и

int X;

Последняя инструкция оставит X неинициализированной (если переменная X является локальной переменной метода).

Оглавление книги


Генерация: 0.212. Запросов К БД/Cache: 0 / 2
поделиться
Вверх Вниз