İsimlendirilmiş Argümanlar
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 49 / 70.
Adlandırılmış bağımsız değişkenler, konuma güvenmek yerine adını kullanarak hangi parametrenin bir değer alacağını belirtmenizi sağlar. Bu, yöntem çağrılarını daha anlaşılır hâle getirir ve bağımsız değişkenleri herhangi bir sırayla geçirmenize olanak tanır.
Değerden önce parametre adını ve ardından iki nokta kullanın:
public static void CreateUser(string name, int age, bool isActive)
{
Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}
// Adlandırılmış argümanlar kullanma
CreateUser(name: "Alice", age: 25, isActive: true);
CreateUser(age: 30, isActive: false, name: "Bob"); // Herhangi bir sıra çalışırAdlandırılmış bağımsız değişkenler, isteğe bağlı parametrelerle birleştirildiğinde öne çıkar. Kendinden önceki tüm isteğe bağlı değerleri sağlamak yerine, doğrudan ihtiyacınız olan değere geçebilirsiniz:
public static void Configure(string host, int port = 8080, bool useSSL = false, int timeout = 30)
{
Console.WriteLine($"{host}:{port}, SSL: {useSSL}, Timeout: {timeout}");
}
// port ve useSSL'i atla, yalnızca timeout belirt
Configure("localhost", timeout: 60);
Configure("server.com", useSSL: true);Konumsal ve adlandırılmış bağımsız değişkenleri birlikte kullanabilirsiniz, ancak konumsal bağımsız değişkenler önce gelmelidir. Adlandırılmış bağımsız değişkenler, özellikle aynı türden birden çok parametreye sahip yöntemlerde veya anlamı yalnızca değerden açıkça anlaşılmayan boolean bayraklarında okunabilirliği artırır.
Görev
KolayYöntem çağrılarını tamamen anlaşılır hâle getirmek için adlandırılmış bağımsız değişkenlerden yararlanan bir rapor oluşturucu geliştirelim. Yöntemlerin birden çok parametresi olduğunda — özellikle aynı türden parametreler veya boolean bayrakları söz konusuysa — adlandırılmış bağımsız değişkenler kodun kendi kendini açıklamasını sağlar.
Kodunuzu iki dosyaya ayıracaksınız:
ReportGenerator.cs:ReportGeneratorad alanında, birkaç isteğe bağlı parametreye sahip bir yöntemi bulunan birReportssınıfı oluşturun:GenerateReport(string title, string author = "Anonymous", bool includeHeader = true, bool includeSummary = false, int maxPages = 10)- Bu yöntem, rapor yapılandırmasını açıklayan biçimlendirilmiş bir dize döndürmelidir
- Biçim:
Report: {title} by {author} | Header: {Yes/No}, Summary: {Yes/No}, Max Pages: {maxPages}
Program.cs: Ana dosyanızda,GenerateReportyöntemini farklı şekillerde çağırarak adlandırılmış bağımsız değişkenlerin gücünü gösterin — ihtiyaç duymadığınız isteğe bağlı parametreleri atlayın ve her rapor için yalnızca önemli olanları belirtin.
Üç girdi alacaksınız:
- Birinci rapor başlığı
- İkinci rapor başlığı
- Üçüncü rapor başlığı
Farklı yapılandırmalara sahip üç rapor oluşturun:
- Birinci rapor: Yalnızca başlığı kullanın (tüm varsayılanlar uygulanır)
- İkinci rapor:
includeSummary: truevemaxPages: 25ile birlikte başlığı kullanın (author ve includeHeader parametrelerini atlayarak varsayılan değerlerini koruyun) - Üçüncü rapor:
author: "Admin",includeHeader: falseveincludeSummary: trueile birlikte başlığı kullanın (maxPages varsayılan değerini koruyun)
Her rapor sonucunu kendi satırına yazdırın.
Örneğin girdiler Sales Q1, Annual Review ve Inventory Check ise çıktı şöyle olmalıdır:
Report: Sales Q1 by Anonymous | Header: Yes, Summary: No, Max Pages: 10
Report: Annual Review by Anonymous | Header: Yes, Summary: Yes, Max Pages: 25
Report: Inventory Check by Admin | Header: No, Summary: Yes, Max Pages: 10Adlandırılmış bağımsız değişkenlerin, önem verdiğiniz parametrelere doğrudan geçmenizi sağladığına dikkat edin — yalnızca author değerini değiştirmek için includeHeader veya includeSummary belirtmeniz gerekmez. Bu, yöntem çağrılarınızı çok daha okunabilir ve amacını daha iyi ortaya koyan bir hâle getirir!
Kendin dene
using System;
using Reports;
class Program
{
public static void Main(string[] args)
{
// Üç rapor başlığını oku
string title1 = Console.ReadLine();
string title2 = Console.ReadLine();
string title3 = Console.ReadLine();
// Bir ReportGenerator örneği oluştur
ReportGenerator generator = new ReportGenerator();
// TODO: İlk raporu oluştur - yalnızca başlığı kullan (tüm varsayılanlar geçerlidir)
// TODO: İkinci raporu oluştur - includeSummary: true ve maxPages: 25 ile başlığı kullan
// (author ve includeHeader'ı atla, varsayılanlarını koru)
// TODO: Üçüncü raporu oluştur - author: "Admin", includeHeader: false ve includeSummary: true ile başlığı kullan
// (maxPages varsayılanını koru)
// Her rapor sonucunu yazdır
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci Kayıtları9Değişken Argümanlar
'params' Anahtar Kelimesiİsteğe Bağlı Parametrelerİsimlendirilmiş ArgümanlarMetot Aşırı YüklemeKendi başına pratik yap: Online C# derleyicisi