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:
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.