Открийте как предстоящите промени ще подобрят кода ви и ще направят живота ви като разработчик малко по-лесен.

Подробности за дългоочаквания C# 12 Preview изтекоха, давайки кратък поглед към предстоящите функции, които трябва да революционизират езика. Тези функции имат голямо обещание за подобряване на четимостта на кода, оптимизиране на производителността и отключване на разширени възможности на езика.

Подобрени изрази за превключване

Представен е C# 8 основни изрази за превключване които ви позволяват да изразите сложна условна логика кратко, в четима форма. C# 12 разширява това, като въвежда нов синтаксис за съпоставяне на шаблони за изрази за превключване, което прави още по-лесно писането на изразителен и кратък код.

Разгледайте следния кодов фрагмент.

вар резултат = обект превключвател
{
вътр аз кога аз > 0 => "Положителен",
вътр аз кога аз < 0 => "отрицателен",
_ => "нула"
};

Този код използва изрази за превключване, за да определи дали дадено цяло число е положителен, отрицателен, или нула

instagram viewer
. В C# 12 можете да опростите този код още повече, като използвате новия синтаксис за съвпадение на шаблони:

вар резултат = обект превключвател
{
> 0 => "Положителен",
< 0 => "отрицателен",
_ => "нула"
};

Този синтаксис ви позволява да пропуснете кога ключова дума и използвайте релационни оператори директно в израза за превключване.

Основни конструктори за класове и структури

Вече можете да създавате първични конструктори във всеки клас или struct (олекотен клас алтернатива). Използвайки първични конструктори, можете да добавяте параметри към декларацията на класа и да използвате тези стойности в тялото на класа.

C# 9 въвежда първични конструктори като част от позиционния синтаксис за записи. C# 12 ги разширява до всички структури и класове.

Можете да поставите параметрите след името на типа в скоби, както е показано по-долу:

публичен клас Студент(вътр документ за самоличност, низ име, IEnumerable<десетичен знак> оценки)
{
публиченСтудент(вътр документ за самоличност, низ име): това(id, име, изброим. Празно<десетичен знак>()) { }
публиченвътр Id => id;
публиченниз име { получавам; комплект; } = име. Подстригване();
публичендесетичен знак GPA => оценки. Всякакви()? оценки. Средно аритметично(): 4.0m;
}

Параметрите на първичен конструктор са в обхвата на цялото тяло на деклариращия тип. Можете да настроите свойства или полета или да ги използвате в методи или локални функции като променливи. Можете да предоставите тези параметри и на базов конструктор.

Подобрения в интерполираните низове

Интерполираните низове съществуват от C# 6. В C# 12 вече можете да създавате динамични стойности за низове, като използвате сложни изрази.

вътр аз = 5;
низ изход = $"Стойността на i е {i}, а неговият квадрат е {i*i}.";
Конзола. WriteLine (изход);

Този код отпечатва "Стойността на i е 5, а неговият квадрат е 25".

Използване на директиви за допълнителни типове

С C# 12 можете да използвате директивата using alias за псевдоним на всеки тип, а не само на именувани типове. Можете да създавате семантични псевдоними за кортежи, масиви, указатели или други опасни типове.

Ето няколко примера:

използвайки Измерване = (низ Единици, вътр разстояние);
използвайки UnitsInt = вътр?;
Пример за използване на псевдоними:
публиченневалиденИзчисляване(Измерване измерване)
{
// Тяло на метода
}

Подобрения на ламбда израза

C# 12 дава възможност за ламбда изрази, като ви позволява да дефинирате стойностите по подразбиране за параметри. Синтаксисът е идентичен с този на другите параметри по подразбиране:

Например, (int incrementTo = 5) => incrementTo + 1 задава стойност по подразбиране 5 за параметъра incrementTo, който ламбда извикването ще използва, ако не му подадете стойност.

вар incrementWithDefault = (вътр увеличение до = 5) => увеличаване до + 1;
увеличение с подразбиране (); // 6
incrementWithDefault(9); // 10

Освен това, много други подобрения дойдоха в ламбда изразите, за да ги направят по-ефективни.

Например:

  • Вече можете да създавате по-сложни изрази в ламбда функции.
  • Вече можете да трансформирате ламбда изрази в изразни дървета, които опростяват сложни заявки и оптимизират производителността.

Асинхронни потоци

Можете да итерирате през асинхронни източници на данни с новия асинхронни потоци характеристика на C# 12. Този нов итератор—изчакайте foreach— помага ви да итерирате върху набор от асинхронни данни:

изчакайтеза всеки (вар вещ вGetItemsAsync())
{
Конзола. WriteLine (елемент.стойност);
}

C# 12: Революционизиращ код с вълнуващи нови функции

В очакване на C# 12 можете да очаквате променяща играта актуализация с вълнуващи нови функции. Тези подобрения, като подобрени изрази за превключване, първични конструктори и подобрения на ламбда изразите, показват силен фокус върху простотата на кода, гъвкавостта и производителността.

C# 12 е готов да направи значителен скок напред, позволявайки ви да пишете по-изразителен, ефективен и мощен код.