17 июля 2024 г. (изменено: 17 июля 2024 г.)

Канал: @cherkashindev

1 725

Как я обычно узнаю о новых фичах в 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 здесь.

А о том, как добавить поддержку спред оператора для кастомных коллекций описывается тут.

👍 4 😁 2 👎 1