Книга: 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
является локальной переменной метода).
- Стиль программирования: использование операторов goto и полных путей доступа в пространствах имен
- Операторный Метод
- Оператор DO
- Объединение двух последовательностей с помощью оператора join
- 6.1.2. Создание объектов с помощью оператора new
- 7.2. Оператор new
- Еще раз об операторе new
- Совет 7. При использовании контейнеров указателей, для которых вызывался оператор new, не забудьте вызвать delete для ук...
- Синтаксическая перегрузка
- Создание группового объединения
- 8.1.11. Многомерные массивы
- 3.12. Структуры