Обложка канала

.NET Разработчик

Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин

.NET Разработчик

3 года назад
Открыть в
День 1538. #ЧтоНовенького Новые Функции C#12. Окончание В недавно выпущенном превью 3 .NET 8 добавили несколько интересных новых функций C#. Начало. Первичные конструкторы 2. Директивы using для дополнительных типов Добавлен ещё один вариант использования ключевого слова using. Теперь с помощью него можно объявить дополнительный тип:
using Measurement = (string, int);
using PathOfPoints = int[];
using DatabaseInt = int?;

Вы можете использовать псевдоним практически для любого типа. Можно создавать псевдонимы для обнуляемых типов-значений, однако нельзя использовать псевдонимы для обнуляемых ссылочных типов. Кортежи особенно интересны, потому что вы можете включать имена и типы элементов:
using Measurement = (string Units, int Distance);

Псевдонимы можно использовать так же, как любые типы:
public void F(Measurement x)
{ }

Псевдонимы типов позволяют абстрагироваться от фактических типов, которые вы используете, и позволяют давать понятные имена запутанным или длинным общим именам, что улучшает читаемость кода. Вы можете оставить отзыв о первичных конструкторах на GitHub в обсуждении Preview Feedback: C# 12 Alias any type. 3. Значения по умолчанию для лямбда-выражений Синтаксис такой же, как и для других параметров по умолчанию:
var addWithDefault = 
 (int addTo = 2) => addTo + 1;
addWithDefault(); // 3
addWithDefault(5); // 6

Значение по умолчанию будет передано в метаданные и доступно через рефлексию как DefaultValue свойства ParameterInfo лямбда-метода:
addWithDefault.Method
 .GetParameters()[0].DefaultValue; // 2

До C#12 нужно было использовать локальную функцию или громоздкое DefaultParameterValue из пространства имен System.Runtime.InteropServices, чтобы указать значение по умолчанию для параметров лямбда-выражения. Эти подходы по-прежнему работают, но их сложнее читать, и они несовместимы со значениями по умолчанию для методов. Теперь будет согласованный поиск значений параметров по умолчанию для методов, конструкторов и лямбда-выражений. Вы можете оставить отзыв о первичных конструкторах на GitHub в обсуждении Preview Feedback: C# 12 Default values in lambda expressions. Чтобы попробовать эти новинки, загрузите последнюю превью версию Visual Studio 17.6 или превью 3 .NET 8. Источник: https://devblogs.microsoft.com/dotnet/check-out-csharp-12-preview/