русский

ИИ для программиста?

05.05.25 06:18
Re: ИИ для программиста?
 
gendy Dinosaur
gendy
in Antwort alex445 05.05.25 02:18

да неужели


В C# с выходом версии 9.0 и новее появилась возможность создавать экземпляры типов без использования ключевого слова new, благодаря сокращённому синтаксису с target-typed new expressions (контекстно-определяемое создание объектов).


📌 Пример:

До (C# 8 и ранее):

Person person = new Person();

После (C# 9+):

Person person = new();

❓ Почему так сделали?

1. Упрощение и читаемость кода

  • Становится меньше дублирования типа.
  • Код становится короче и чище.
Dictionary<string, List<int>> dict = new(); // раньше пришлось бы повторить тип целиком

2. Лучше работает с автодополнением (IDE)

  • Особенно полезно при работе со сложными обобщёнными типами (List<Dictionary<string, MyType>> и т.д.).

🔧 Как это работает?

C# использует контекстный тип слева (target type) и выводит, какой тип должен быть создан с помощью new().

Компилятор сам подставляет правильный тип в new() на основании типа переменной слева от знака =.

⚠️ Ограничения

  • Работает только если тип можно однозначно определить из контекста.
  • Не сработает в var x = new(); — компилятор не знает, что за тип.
  • Не работает с конструкторами, требующими специфичных параметров без контекста.

🧠 Заключение

Краткая форма new() — это синтаксический сахар, введённый в новых версиях C# (с 9.0) для повышения удобства, читаемости и снижения дублирования типов при инициализации объектов.


Хочешь список других таких нововведений в C# 9–12?

Фашизм будет разбит


Человека карают только те боги, в которых он верит

 

Sprung zu