Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
9m 03s
Slowo kluczowe using w C# robi więcej niż jedna rzecz, a różnica między jego podstawową formą a nowymi możliwościami jest większa, niż większość programistów zdaje sobie sprawę. Skróty przestrzeni nazw istnieją od początku, importy statycznych klas pojawiły się w .NET 6, a .NET 8 rozszerzył składnię aliasów, aby obejmowała dowolny typ, w tym krotki. Znając wszystkie trzy formy, możesz zredukować powtarzające się deklaracje typów do jednej czytelnej nazwy na początku pliku.
Ten przewodnik analizuje każdą formę dyrektywy using w aplikacji konsolowej .NET 8, na podstawie przeprowadzki Tima Coreya po najnowszych funkcjach. Zaczną od znanej skrótu przestrzeni nazw po nową składnię aliasu typu.
[0:35 - 1:35] Ustawienie rozpoczyna się od wyłączenia implicit usings, aby każda dyrektywa była wyraźnie widoczna w kodzie. Bez żadnych poleceń using na górze, wywołanie Console.WriteLine wymaga podania pełnej kwalifikowanej nazwy: System.Console.WriteLine. Dodanie jednej dyrektywy to rozwiązuje:
using System;
Ta jedna linia udostępnia każdy typ wewnątrz System pod jego krótką nazwą. Dyrektywa nie jest importem w sensie biblioteki; nie wprowadzono żadnego nowego kodu. To jest skrót przestrzeni nazw, który informuje kompilator, gdzie szukać, gdy napotka niekwalifikowaną nazwę typu.
[2:19 - 2:45] Forma using static celuje w konkretną klasę statyczną, a nie w przestrzeń nazw. Skierowanie jej na System.Console sprawia, że każdy statyczny element tej klasy jest dostępny bez prefiksu klasy:
using static System.Console;
WriteLine("Hello, world!");
Zamiast Console.WriteLine, wywoływana jest bezpośrednio WriteLine. Ta forma, która pojawiła się w .NET 6, jest najbardziej przydatna, gdy plik wielokrotnie wywołuje tę samą klasę statyczną. Eliminacja powtarzającej się nazwy klasy redukuje wizualny szum na każdym miejscu wywołania.
[3:41 - 6:40] .NET 8 rozszerzył składnię aliasów, dzięki czemu using może przypisać krótką nazwę dowolnemu typowi. Przypadkiem motywującym jest nazwana krotka. Krotki są powszechnymi typami zwracanymi, gdy metoda musi zwrócić kilka powiązanych wartości bez pełnej definicji klasy, ale deklarowanie tego samego typu krotki więcej niż raz w pliku powoduje wiele powtórzeń:
// Without an alias, each declaration repeats the full tuple type
(string FirstName, string LastName) GetUser() { ... }
(string FirstName, string LastName) person = GetUser();
Alias typu redukuje to do jednej deklaracji na początku:
using Person = (string FirstName, string LastName);
Od tego momentu w pliku, Person zastępuje pełną definicję krotki:
Person GetUser() { ... }
Person person = GetUser();
Alias żyje tylko w obrębie pliku, w którym został zadeklarowany. Nie propaguje się w całej aplikacji. Należy zauważyć, że jeśli potrzebujesz, aby typ był dostępny w obrębie całego projektu, zapis lub klasa są odpowiednim wyborem.
[5:32 - 6:23] Powszechne pytanie się pojawia: jeśli Person wygląda jak rekord, dlaczego po prostu nie zadeklarować jednego? Odpowiedź sprowadza się do zakresu i wagi. Rekord lub klasa to nazwany typ, który istnieje w całym projekcie, ma własny plik i musi być utrzymywany jako kod bazowy się rozwija. Alias krotki to lokalna wygoda w pliku. Gdy uzywasz dwu-polowego krotki dwa lub trzy razy w jednym pliku klasy, tworzenie pelnej definicji typu dodaje obciazenie konserwacyjne, ktore alias omija. Zamysłem zespołu .NET jest zapewnienie gradientu opcji, zamiast wymuszania binarnego wyboru między surową krotką a pełną klasą.
Trzy formy using obejmują różne potrzeby. Podstawowa dyrektywa przestrzeni nazw skraca kwalifikowane nazwy typów w całym pliku, podczas gdy using static usuwa prefiks klasy z wywołań statycznych elementów. Alias typowy .NET 8 przypisuje czytelną nazwę dowolnemu typowi, w tym krotkom, ograniczonym do pojedynczego pliku. Każda forma redukuje powtarzanie bez zmiany podstawowego zachowania twojego kodu.
Obejrzyj pełne wideo na kanale YouTube Tima Coreya channel dla na żywo demonstracji wszystkich trzech form w działającym projekcie .NET 8.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy