ToString() Geçersiz Kılma
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 38 / 70.
C#'taki her sınıf, bir ToString() metodu sağlayan object sınıfından miras alır. Varsayılan olarak, tam nitelikli tür adını döndürür; bu, bir nesnenin gerçek verilerini görmek istediğinizde pek kullanışlı değildir.
Nesnenizin anlamlı bir dize temsilini döndürmek için ToString() metodunu geçersiz kılabilirsiniz:
public class Person
{
public string Name { get; }
public int Age { get; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public override string ToString()
{
return $"{Name} ({Age} years old)";
}
}Artık bir Person nesnesini yazdırdığınızda veya birleştirdiğinizde, okunabilir bir çıktı alırsınız:
Person p = new Person("Alice", 30);
Console.WriteLine(p); // Alice (30 yaşında)Geçersiz kılma olmadan, bu işlem MyNamespace.Person gibi bir şey yazdırırdı. override anahtar sözcüğü gereklidir, çünkü object öğesinden devralınan yöntemi değiştiriyorsunuz. Bu, bir nesnenin durumu hakkında hızlı bir fikir edinmeniz gereken hata ayıklama ve günlük kaydı işlemlerinde özellikle değerlidir.
Görev
KolayYazdırıldığında anlamlı dize gösterimleri sağlayan ve hata ayıklamayı ve kitap bilgilerini görüntülemeyi çok daha sezgisel hâle getiren bir Book sınıfı oluşturalım.
kodunuzu iki dosya arasında düzenleyeceksiniz:
Book.cs: Bir kitabı temel ayrıntılarıyla temsil edenBookad alanında birLibrarysınıfı oluşturun. Kitabınız şunlara sahip olmalıdır:- Salt okunur üç özellik:
Title(string),Author(string) veYear(int) - Title, author ve year değerlerini bu sırayla kabul eden bir oluşturucu
- Biçimlendirilmiş bir dize döndüren geçersiz kılınmış
ToString()yöntemi:"{Title}" by {Author} ({Year})
- Salt okunur üç özellik:
Program.cs: Ana dosyanızda, giriş değerlerini kullanarak birBooknesnesi oluşturun ve nesneyi doğrudan yazdırın.ToString()geçersiz kılmanız sayesinde, kitap nesnesiniConsole.WriteLine()yöntemine geçirmek tür adını göstermek yerine biçimlendirilmiş bilgileri otomatik olarak görüntüler.
Üç girdi alacaksınız:
- Kitap başlığı (string)
- Yazar adı (string)
- Yayın yılı (integer)
Kitap nesnesini doğrudan Console.WriteLine() kullanarak yazdırın.
Örneğin girdiler The Great Gatsby, F. Scott Fitzgerald ve 1925 ise çıktı şöyle olmalıdır:
"The Great Gatsby" by F. Scott Fitzgerald (1925)Buradaki sihir, ToString() yöntemini açıkça çağırmamanızdır - bir nesneyi Console.WriteLine() yöntemine geçirdiğinizde, nesnenin ToString() yöntemini otomatik olarak çağırır. Geçersiz kılmanız, bu çıktıyı yalnızca Library.Book göstermesi yerine kullanışlı hâle getirir!
Kendin dene
using System;
using Library;
class Program
{
public static void Main(string[] args)
{
// Girdiyi oku
string title = Console.ReadLine();
string author = Console.ReadLine();
int year = Convert.ToInt32(Console.ReadLine());
// TODO: Giriş değerlerini kullanarak bir Book nesnesi oluşturun
// TODO: Console.WriteLine() kullanarak kitap nesnesini doğrudan yazdırın
}
}
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