C# Kullanım Direktifleri ve .NET 8'de Tür Takma Adları
C#'deki using anahtar kelimesi birden fazla iş yapar ve bu kelimenin temel hali ile yeni yetenekleri arasındaki fark çoğu geliştiricinin fark ettiğinden daha büyüktür. Başından beri var olan ad alanı kısayolları, .NET 6 ile statik sınıf importları geldi ve .NET 8, alias söz dizimini herhangi bir türü kapsayacak şekilde genişletti, bunlar arasında tuple'lar da vardır. Üç biçimi de bilmek, tekrarlayan tür bildirimlerini bir dosyanın en üstünde tek bir okunabilir isime indirmenizi sağlar.
Bu kılavuz, Tim Corey'nin en son özelliklerini anlattığı bir walkthrough'a dayanan .NET 8 konsol uygulamasında using direktifinin her formunu inceler. Tanıdık ad alanı kısayolundan yeni tür alias sözdizimine kadar geliştireceğiz.
Başlangıç: Temel Ad Alanı Direktifi
[0:35 - 1:35] Kurulum, örtük kullanımları kapatarak başlar, böylece her direktif kodda açıkça görülür. Üst kısımda herhangi bir using ifadeleri olmadan, Console.WriteLine çağrısı tam kalifiye adı gerektirir: System.Console.WriteLine. Tek bir direktif eklemek bunu çözer:
using System;using System;O tek satır, System içindeki her türü kısa adıyla erişilebilir kılar. Direktif, kütüphane anlamında bir ithalat değildir; yeni bir kod alınmıyor. Bu, derleyici bir yeterli tür ismiyle karşılaştığında nereye bakacağını belirten bir ad alanı kısayoludur.
Statik Kullanım: Sınıf Adını Atlayarak
[2:19 - 2:45] using static formu, bir ad alanı yerine belirli bir statik sınıfı hedefler. Bunu System.Console'e işaret etmek, o sınıfın her statik üyesini sınıf ön eki olmadan erişilebilir hale getirir:
using static System.Console;
WriteLine("Hello, world!");using static System.Console;
WriteLine("Hello, world!");Console.WriteLine yerine, WriteLine doğrudan çağrılır. .NET 6'da gelen bu form, bir dosyanın aynı statik sınıfı tekrarlayan bir şekilde çağırdığı zaman en faydalı olanıdır. Tekrarlayan sınıf adını kaldırmak, her çağrı noktasında görsel kalabalığı azaltır.
Tür Aliases: Herhangi Bir Türe İsim Verme
[3:41 - 6:40] .NET 8, alias söz dizimini genişletti, böylece using herhangi bir türe kısa bir isim atayabilir. Teşvik edici bir durum, bir adı verilmiş demettir. Demetler, bir metodun tam bir sınıf tanımı olmadan birkaç ilgili değeri geri göndermesi gerektiğinde yaygın döndürme türleridir, ancak bir dosyada aynı demet türünü birden fazla kez bildirmek, çok fazla tekrara neden olur:
// Without an alias, each declaration repeats the full tuple type
(string FirstName, string LastName) GetUser() { ... }
(string FirstName, string LastName) person = GetUser();// Without an alias, each declaration repeats the full tuple type
(string FirstName, string LastName) GetUser() { ... }
(string FirstName, string LastName) person = GetUser();Bir tür alias, bunu üst kısımda tek bir bildirimle azaltır:
using Person = (string FirstName, string LastName);using Person = (string FirstName, string LastName);O andan itibaren dosyada Person, tam tuple tanımının yerini alır:
Person GetUser() { ... }
Person person = GetUser();Person GetUser() { ... }
Person person = GetUser();Alias, yalnızca bildirildiği dosya içinde yaşar. Tüm uygulama genelinde yayılmaz. Not: Eğer türü proje genelinde kullanılabilir hale getirmeniz gerekiyorsa, bir kayıt veya sınıf uygun seçimdir.
Alias ile Kayıt veya Sınıf Arasındaki Fark
[5:32 - 6:23] Yaygın bir soru ortaya çıkar: eğer Person bir kayıt gibi görünüyorsa, neden sadece bir kayıt ilan etmiyoruz? Cevap kapsam ve ağırlığa dayanır. Bir kayıt veya sınıf, tüm proje genelinde var olan adlandırılmış bir türdür, kendi dosyasını taşır ve kod tabanı geliştikçe bakımı gereklidir. Bir demet aliası dosya yerel pratik bir çözümdür. İki ya da üç kez bir sınıf dosyası içinde bir iki alanlı demet kullandığınızda, tam bir tür tanımı oluşturmak, alias'ın kaçındığı bakım yükü ekler. .NET ekibinin niyeti, ham bir demet ve tam bir sınıf arasında zorlayıcı bir seçim yerine, seçeneklerin bir gradyanını sunmaktır.
Sonuç
Üç using formu farklı ihtiyaçları karşılar. Temel ad alanı direktifi, bir dosya genelinde kalifiye tür adlarını kısaltırken, using static statik üye çağrılarından sınıf ön ekini kaldırır. .NET 8 tür aliası, bir dosyayla sınırlı olarak demetler dahil olmak üzere herhangi bir türe okunabilir bir isim atar. Her form, kodunuzun temel davranışını değiştirmeden tekrarı azaltır.
Tim Corey'nin YouTube videosunu ve kanalını ziyaret ederek çalışan bir .NET 8 projesinde tüm bu biçimleri canlı olarak izleyin.

