Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
новый оператор —
Оператор new создает экземпляр типа. Ключевое слово new можно также использовать как модификатор объявления члена или ограничение универсального типа.
Справочные документы по языку C# описывают последнюю выпущенную версию языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.
Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.
Подсказка
Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей об истории версий языка C#.
Вызов конструктора
Чтобы создать новый экземпляр типа, вызовите один из конструкторов этого типа с помощью new оператора:
var dict = new Dictionary<string, int>();
dict["first"] = 10;
dict["second"] = 20;
dict["third"] = 30;
Console.WriteLine(string.Join("; ", dict.Select(entry => $"{entry.Key}: {entry.Value}")));
// Output:
// first: 10; second: 20; third: 30
Для создания экземпляра объекта и его инициализации в одном операторе можно использовать инициализатор объекта или элементов с оператором new, как в следующем примере:
var dict = new Dictionary<string, int>
{
["first"] = 10,
["second"] = 20,
["third"] = 30
};
Console.WriteLine(string.Join("; ", dict.Select(entry => $"{entry.Key}: {entry.Value}")));
// Output:
// first: 10; second: 20; third: 30
Типизированный целевой объект new
Выражения вызова конструктора являются целевыми типами. То есть, если известен целевой тип выражения, вы можете опустить имя типа, как показано в следующем примере:
List<int> xs = new();
List<int> ys = new(capacity: 10_000);
List<int> zs = new() { Capacity = 20_000 };
Dictionary<int, List<int>> lookup = new()
{
[1] = new() { 1, 2, 3 },
[2] = new() { 5, 8, 3 },
[5] = new() { 1, 0, 4 }
};
Как показано в предыдущем примере, всегда используйте скобки в целевом типизированном new выражении.
Если целевой тип выражения new неизвестен (например, если вы используете ключевое слово var), нужно указать имя типа.
создание массива
С помощью оператора new можно также создать экземпляр массива, как показано в следующем примере:
var numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
Console.WriteLine(string.Join(", ", numbers));
// Output:
// 10, 20, 30
Чтобы создать экземпляр массива и заполнить его элементами в одном операторе, используйте синтаксис инициализации массива. В следующем примере показаны различные способы сделать это:
var a = new int[3] { 10, 20, 30 };
var b = new int[] { 10, 20, 30 };
var c = new[] { 10, 20, 30 };
Console.WriteLine(c.GetType()); // output: System.Int32[]
Дополнительные сведения см. в руководстве по работе с массивами.
Создание экземпляров анонимных типов
Чтобы создать экземпляр анонимного типа, используйте оператор new и синтаксис инициализации объекта:
var example = new { Greeting = "Hello", Name = "World" };
Console.WriteLine($"{example.Greeting}, {example.Name}!");
// Output:
// Hello, World!
Уничтожение экземпляров типа
Вам не нужно уничтожать ранее созданные экземпляры типов. Система автоматически уничтожает экземпляры ссылочных и типов значений. Система уничтожает экземпляры типов значений сразу после уничтожения контекста, содержащего их. Сборщик мусора уничтожает экземпляры ссылочных типов в некоторое время после удаления последней ссылки.
Для экземпляров типов, содержащих неуправляемые ресурсы, например детерминированный детерминированный очистка, чтобы обеспечить освобождение ресурсов как можно скорее. Дополнительные сведения см. в справочнике System.IDisposable по API и статье инструкцииusing.
Возможность перегрузки оператора
Определяемый пользователем тип не может перегружать new оператор.
Спецификация языка C#
Дополнительные сведения см. в разделе Оператор newспецификация языка C#.
Подробные сведения о выражении new с целевым типом см. в примечании к предлагаемой функции.