Dowiedz się, jak nadchodzące zmiany poprawią Twój kod i ułatwią Ci życie programisty.

Wyciekły szczegóły wyczekiwanej wersji C# 12 Preview, dające wgląd w nadchodzące funkcje, które powinny zrewolucjonizować ten język. Te funkcje są bardzo obiecujące pod względem poprawy czytelności kodu, optymalizacji wydajności i odblokowania zaawansowanych możliwości języka.

Ulepszone wyrażenia przełączające

Wprowadzenie języka C# 8 podstawowe wyrażenia przełączające które pozwalają zwięźle wyrazić złożoną logikę warunkową w czytelnej formie. C# 12 idzie dalej, wprowadzając nową składnię dopasowywania wzorców dla wyrażeń przełączających, co jeszcze bardziej ułatwia pisanie wyrazistego i zwięzłego kodu.

Rozważ następujący fragment kodu.

rozm wynik = przedmiot przełącznik
{
int I Kiedy ja > 0 => "Pozytywny",
int I Kiedy ja < 0 => "Negatywny",
_ => "Zero"
};

Ten kod używa wyrażeń przełączających, aby określić, czy liczba całkowita jest pozytywny, negatywny, Lub zero. W języku C# 12 można jeszcze bardziej uprościć ten kod, korzystając z nowej składni dopasowywania wzorców:

instagram viewer
rozm wynik = przedmiot przełącznik
{
> 0 => "Pozytywny",
< 0 => "Negatywny",
_ => "Zero"
};

Ta składnia pozwala pominąć Kiedy słowa kluczowego i używać operatorów relacyjnych bezpośrednio w wyrażeniu przełączającym.

Podstawowe konstruktory klas i struktur

Możesz teraz tworzyć podstawowe konstruktory w dowolnym klasa Lub struct (lekka alternatywa dla klasy). Używając konstruktorów podstawowych, możesz dodawać parametry do deklaracji klasy i używać tych wartości w treści klasy.

C# 9 wprowadził konstruktory podstawowe jako część składni pozycyjnej rekordów. C# 12 rozszerza je na wszystkie struktury i klasy.

Możesz umieścić parametry po nazwie typu w nawiasach, jak pokazano poniżej:

publiczny klasa Student(int ID, strunowy nazwa, IEnumerable<dziesiętny> stopnie)
{
publicznyStudent(int ID, strunowy nazwa): Ten(id, nazwa, wyliczalne. Pusty<dziesiętny>()) { }
publicznyint identyfikator => identyfikator;
publicznystrunowy Nazwa { Dostawać; ustawić; } = nazwa. Przycinać();
publicznydziesiętny GPA => stopnie. Każdy()? klas. Przeciętny(): 4.0M;
}

Parametry konstruktora podstawowego mają zasięg w całym ciele typu deklarującego. Możesz skonfigurować właściwości lub pola, a także wykorzystać je w metodach lub funkcjach lokalnych jako zmienne. Te parametry można również podać konstruktorowi podstawowemu.

Ulepszenia ciągów interpolowanych

Ciągi interpolowane istnieją już od C# 6. W języku C# 12 można teraz tworzyć wartości dynamiczne dla ciągów przy użyciu skomplikowanych wyrażeń.

int ja = 5;
strunowy wyjście = $"Wartość i wynosi {I}, a jego kwadrat to {i*i}.";
Konsola. WriteLine (wyjście);

Ten kod drukuje „Wartość i wynosi 5, a jego kwadrat to 25”.

Używanie dyrektyw dla dodatkowych typów

W języku C# 12 można używać dyrektywy using alias do tworzenia aliasów dowolnego typu, nie tylko typów nazwanych. Możesz tworzyć aliasy semantyczne dla krotek, tablic, wskaźników lub innych niebezpiecznych typów.

Oto kilka przykładów:

za pomocą Pomiar = (strunowy Jednostki, int Dystans);
za pomocą JednostkiInt = int?;
Przykład użycia aliasów:
publicznypróżniaObliczenie(Pomiar pomiaru)
{
// Treść metody
}

Ulepszenia wyrażeń lambda

C# 12 wzmacnia wyrażenia lambda, umożliwiając definiowanie domyślnych wartości parametrów. Składnia jest identyczna jak w przypadku innych parametrów domyślnych:

Na przykład, (int incrementTo = 5) => incrementTo + 1 ustawia domyślną wartość 5 dla parametru incrementTo, którego użyje wywołanie lambda, jeśli nie przekażesz mu wartości.

rozm incrementWithDefault = (int przyrost do = 5) => incrementTo + 1;
incrementWithDefault(); // 6
incrementWithDefault(9); // 10

Poza tym do wyrażeń lambda wprowadzono wiele innych ulepszeń, aby uczynić je bardziej efektywnymi.

Na przykład:

  • Możesz teraz tworzyć bardziej złożone wyrażenia w ramach funkcji lambda.
  • Wyrażenia lambda można teraz przekształcać w drzewa wyrażeń, które upraszczają złożone zapytania i optymalizują wydajność.

Strumienie asynchroniczne

Możesz iterować przez asynchroniczne źródła danych za pomocą new strumienie asynchroniczne funkcja C# 12. Ten nowy iterator —czekać na fore— pomaga w iteracji zestawu danych asynchronicznych:

czekać nadla każdego (rozm przedmiot WGetItemsAsync())
{
Konsola. Linia zapisu (pozycja.wartość);
}

C# 12: Rewolucja w kodzie dzięki ekscytującym nowym funkcjom

W oczekiwaniu na C# 12 możesz spodziewać się przełomowej aktualizacji z nowymi, ekscytującymi funkcjami. Te postępy, takie jak ulepszone wyrażenia przełączające, konstruktory podstawowe i ulepszenia wyrażeń lambda, wskazują na silny nacisk na prostotę, elastyczność i wydajność kodu.

C# 12 jest gotowy na znaczący krok naprzód, umożliwiając pisanie bardziej wyrazistego, wydajnego i wydajnego kodu.