17 июля 2024 г. (изменено: 17 июля 2024 г.)
Канал: @cherkashindev
Как я обычно узнаю о новых фичах в C# ❓
О новых фичах в C# я обычно узнаю с помощью подсказок Райдера — IDE для C# от JetBrains.
В общем, обновился, пишу код, и Райдер предлагает что-то исправить там, где раньше все было окей. Думаю — ну ок, давай исправим. Но ощущение, что он перепутал C# c JavaScript.
string[] array = new [] { “a”, “b”, }предлагает заменить наstring[] array = ["a", "b"]Array.Empty<string>()на[]List<string> list = new (vowels)наList<string> list = [.. vowels]
Особенно интересен последний пример, очень уж напоминающий spread оператор из JS. И действительно, в C# его тоже завезли, правда по пути потеряли одну точку и назвали spread element.
int[] row0 = [1, 2, 3];
int[] row1 = [4, 5, 6];
int[] row2 = [7, 8, 9];
int[] example1 = [..row0, ..row1, ..row2];
List<int> example2 = [..row0, row1[0]];В общем, в C# 12 поднасыпали синтаксического сахара для работы с коллекциями. А ещё прихватили Primary конструктор из Scala. Это когда конструктор объявляется сразу после имени класса.
public class BankAccount(string accountID, string owner)
{
public string AccountID { get; } = accountID;
public string Owner { get; } = owner;
public override string ToString() => $"Account ID: {AccountID}, Owner: {Owner}";
}Подробнее о релизе C# 12 здесь.
А о том, как добавить поддержку спред оператора для кастомных коллекций описывается тут.