Menu
Coddy logo textTech

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.

challenge icon

Görev

Kolay

Yazdı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 eden Book ad alanında bir Library sınıfı oluşturun. Kitabınız şunlara sahip olmalıdır:
    • Salt okunur üç özellik: Title (string), Author (string) ve Year (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})
    Çıktıda başlığın çift tırnak içine alınması gerektiğine dikkat edin!
  • Program.cs: Ana dosyanızda, giriş değerlerini kullanarak bir Book nesnesi oluşturun ve nesneyi doğrudan yazdırın. ToString() geçersiz kılmanız sayesinde, kitap nesnesini Console.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
    }
}
quiz iconKendini test et

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

Kendi başına pratik yap: Online C# derleyicisi