Оператор
new в C# создаёт новый экземпляр объекта и выделяет для него память в куче (Heap) или стеке (Stack), в зависимости от типа. 🚩Как работает `new`?
Для классов (
class) – выделяет память в куче (Heap) и возвращает ссылку на объект. Для структур (
struct) – если структура создаётся без new, её поля остаются неинициализированными, но если использовать new, она получает значения по умолчанию. Для массивов (
T[]) – выделяет память в куче, даже если T – это struct. Для делегатов – создаёт экземпляр делегата.
Пример:
new с классом (class)class Person
{
public string Name;
public Person(string name)
{
Name = name;
}
}
class Program
{
static void Main()
{
Person p1 = new Person("Alice"); // Создаём новый объект в куче
Console.WriteLine(p1.Name); // Alice
}
}
Пример:
new со структурой (struct)struct Point
{
public int X;
public int Y;
public Point(int x, int y)
{
X = x;
Y = y;
}
}
class Program
{
static void Main()
{
Point p1 = new Point(5, 10); // Создаёт структуру в стеке
Console.WriteLine(p1.X); // 5
}
}
Пример:
new с массивомint[] numbers = new int[5]; // Создаёт массив в куче
numbers[0] = 10;
Console.WriteLine(numbers[0]); // 10
🚩Что делает `new` за кулисами?
Выделение памяти в куче (для классов) или в стеке (для структур).
Вызов конструктора класса или структуры.
Возвращение ссылки на объект (для классов) или самого объекта (для структур).
Ставь 👍 и забирай 📚 Базу знаний