İfade Gövdeli Üyeler
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 14 / 70.
İfade gövdeli üyeler, yalnızca tek bir ifade içeren üyeler için kısa ve öz bir söz dizimi sağlar. Süslü parantezlerle tam yöntem veya özellik gövdeleri yazmak yerine, => ok söz dizimini kullanırsınız.
Tek bir ifade döndüren metotlar için, gövdenin tamamını değiştirebilirsiniz:
// Geleneksel metot
public int Add(int a, int b)
{
return a + b;
}
// İfade gövdeli metot
public int Add(int a, int b) => a + b;Bu söz dizimi, daha önce kısaca gördüğün salt okunur özellikler için de çalışır:
public class Circle
{
public double Radius { get; set; }
public double Area => Math.PI * Radius * Radius;
public double Circumference => 2 * Math.PI * Radius;
}Ayrıca özellik alıcıları ve ayarlayıcıları için ifade gövdelerini ayrı ayrı da kullanabilirsiniz:
private string name;
public string Name
{
get => name;
set => name = value.Trim();
}Tek bir ifade içerdiklerinde yapıcılar bile bu söz dizimini kullanabilir:
public class Person
{
public string Name { get; }
public Person(string name) => Name = name;
}İfade gövdeli üyeler, mantık basit olduğunda kodunuzu daha okunabilir hâle getirir. Bunları basit işlemler için kullanın; ancak birden fazla ifadeye veya karmaşık mantığa ihtiyaç duyduğunuzda geleneksel gövdeleri tercih edin.
Görev
KolayTemiz ve kısa kod yazmak için ifade gövdeli üyelerin gücünü gösteren bir ürün fiyatlandırma hesaplayıcısı oluşturalım.
Kodunuzu düzenlemek için iki dosya oluşturacaksınız:
Product.cs:Productad alanında birStoresınıfı tanımlayın. Bu sınıf, çeşitli ifade gövdeli üyeleri göstermelidir:- Otomatik uygulanan bir
Name(string) veBasePrice(decimal) özelliği - Her iki özelliği ayarlayan ifade gövdeli bir oluşturucu
- Taban fiyatın %10'unu hesaplayan ifade gövdeli salt okunur bir
TaxAmountözelliği - Taban fiyat ile vergi tutarının toplamını döndüren ifade gövdeli salt okunur bir
TotalPriceözelliği - İndirim tutarını (taban fiyat çarpı yüzde bölü 100) döndüren ifade gövdeli bir
GetDiscount(decimal percentage)yöntemi - Toplam fiyattan indirimi çıkararak sonucu döndüren ifade gövdeli bir
GetFinalPrice(decimal discountPercentage)yöntemi
- Otomatik uygulanan bir
Program.cs: Ana dosyanızda, girdi değerlerini kullanarak birProductoluşturun ve ardından fiyat ayrıntılarını görüntüleyin.
Üç girdi alacaksınız:
- Ürün adı
- Taban fiyat
- Uygulanacak indirim yüzdesi
Fiyatlandırma ayrıntılarını şu biçimde yazdırın:
Product: {Name}
Base Price: {BasePrice}
Tax (10%): {TaxAmount}
Total Price: {TotalPrice}
Discount ({percentage}%): {discountAmount}
Final Price: {finalPrice}Örneğin girdiler Laptop, 1000 ve 15 ise çıktı şu şekilde olmalıdır:
Product: Laptop
Base Price: 1000.00
Tax (10%): 100.00
Total Price: 1100.00
Discount (15%): 150.00
Final Price: 950.00Her parasal değeri tam olarak iki ondalık basamakla biçimlendirin; örneğin value.ToString("F2") veya $"{value:F2}". Bu kural taban fiyat, vergi, toplam, indirim ve son fiyatın tümü için geçerlidir.
Tek bir ifade içeren tüm üyeler için => ok söz dizimini kullanmayı unutmayın. Bu, kodunuzu temiz ve okunabilir tutar!
Kendin dene
using System;
using Store;
class Program
{
public static void Main(string[] args)
{
// Girdileri oku
string name = Console.ReadLine();
decimal basePrice = Convert.ToDecimal(Console.ReadLine());
decimal discountPercentage = Convert.ToDecimal(Console.ReadLine());
// Girdi değerlerini kullanarak bir Product nesnesi oluştur
Product product = new Product(name, basePrice);
// GetDiscount metodunu kullanarak indirim tutarını hesapla
decimal discountAmount = product.GetDiscount(discountPercentage);
// GetFinalPrice metodunu kullanarak son fiyatı hesapla
decimal finalPrice = product.GetFinalPrice(discountPercentage);
// Fiyatlandırma detaylarını gerekli formatta yazdır:
Console.WriteLine($"Product: {product.Name}");
Console.WriteLine($"Base Price: {product.BasePrice:F2}");
Console.WriteLine($"Tax (10%): {product.TaxAmount:F2}");
Console.WriteLine($"Total Price: {product.TotalPrice:F2}");
Console.WriteLine($"Discount ({discountPercentage}%): {discountAmount:F2}");
Console.WriteLine($"Final Price: {finalPrice:F2}");
}
}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ıKendi başına pratik yap: Online C# derleyicisi