3 функции C# 12 , которые поразят вас🤯

3 функции C# 12 , которые поразят вас🤯

Приготовьтесь к хорошим новостям! Microsoft добавила много классных новых возможностей в C# 12 Preview. В этом посте мы погрузимся них. Итак, поехали!

Первичные конструкторы для не рекордных классов и структур.

Это первая возможность C# 12 Preview. Эта возможность поможет сократить количество кода и упростит инициализацию свойств, а так же использование параметров конструктора в методах и аксессорах.

public class Student(int id, string name, IEnumerable<decimal> grades)
{
public Student(int id, string name) : this(id, name, Enumerable.Empty<decimal>()) { }
public int Id => id;
public string Name { get; set; } = name.Trim();
public decimal GPA => grades.Any() ? grades.Average() : 4.0m;
}

В приведенном выше примере Student, первичные параметры конструктора доступны во всем теле кода.

Например, мы можем сделать это с параметром Name (задается параметром name.Trim()). Кроме того, параметр grades используется в свойстве accessor для GPA.

Итак, вы знаете, что свойства не создаются автоматически, для первичных параметров конструктора, в не рекордных классах и структурах? Оказывается, их нужно создавать самостоятельно, чтобы показать, какие данные открыты. Это вполне соответствует тому, как обычно используются классы, верно?

И вот что самое интересное: первичные конструкторы могут стать настоящим спасением! Когда речь идет о том, чтобы избежать хлопот, связанных с объявлением приватных полей и привязкой значений параметров к этим полям, в этих скучных телах конструкторов.

Хотите узнать, как это сделать? Просто добавьте инициализатор this(…), чтобы вызвать другой конструктор для того же класса или структуры, убедившись, что первичный конструктор участвует в работе.

Использование директив для дополнительных типов

Эта новая возможность, появившаяся в C# 12, не ограничивается типами значений без нуля, а также включает кортежи с типами элементов или именами.

Вот пример использования псевдонимов для типов:

using Measurement = (string Units, int Distance);
using PathOfPoints = int[];
using DatabaseInt = int?;

В примере выше, мы создаем псевдонимы для кортежа, массива целых чисел и целого числа с нулевым значением.

Эти псевдонимы можно использовать вместо исходного типа в любом месте, где этот тип обычно используется:

public void CalculateDistance(PathOfPoints points)
{ }


Значения по умолчанию для лямбда-выражений

Эта функция похожа на значения по умолчанию для параметров регулярных методов, и она позволяет разработчикам создавать более гибкие и лаконичные лямбда-выражения.

Просто добавьте знак равенства и значение, которое вы хотите присвоить параметру, после его объявления.

Например, (int addTo = 2) => addTo + 1 устанавливает значение по умолчанию 2 для параметра addTo, которое будет использоваться, если при вызове лямбда-выражения значение не будет указано:

var addWithDefault = (int addTo = 2) => addTo + 1;
addWithDefault(); // 3
addWithDefault(5); // 6

Благодаря этому, вам не придется полагаться на System’s DefaultParameterValue. Чтобы сделать код более лаконичным и читабельным, используйте пространство имен InteropServices для установления значений по умолчанию для параметров лямбда-выражений.

До появления C# 12, разработчикам приходилось использовать локальную функцию или атрибут DefaultParameterValue, для задания значений параметров по умолчанию для лямбда-выражений. Такой подход был более громоздким и менее интуитивным, чем новый синтаксис.

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

Также, это помогает избежать повторения похожих лямбда-выражений с незначительными различиями в значениях параметров.

Наконец, значения параметров по умолчанию для лямбда-выражений, включаются в метаданные и доступны через отражение. Это облегчает разработчикам написание кода, динамически использующего лямбда-выражения.

Заключение

В этой статье мы рассмотрели некоторые из новых возможностей, которые Microsoft представила в C# 12 Preview.

Эти новые возможности помогут разработчикам писать более лаконичный и читабельный код.

Microsoft постоянно работает над улучшением языка C#, чтобы сделать его более эффективным и удобным для разработчиков. В ближайшем будущем разработчики могут ожидать еще больших улучшений в этой платформе.

+1
1
+1
1
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *