CodeBlanks Logo Icon CodeBlanks

this() çağrısı

C# kursu · Orta seviye · Ders 10/116

this() ile başka bir yapıcıya zincirleme yapmayı öğrenirsin.

this() ile zincirleme

Bir yapıcı, this(...) sözdizimi ile aynı sınıftaki başka bir yapıcıyı çağırabilir. Buna yapıcı zincirleme (chaining) denir. Tekrarı önler: ortak kod tek bir yapıcıda toplanır.

Örnek: public Point() : this(0, 0) { }. Bu, parametresiz yapıcı çağrıldığında önce iki parametreli Point(0, 0) yapıcısını çalıştırır. this(0, 0) ifadesi gövdeden önce, iki nokta üst üste ile yazılır.

Neden this()?

Overload yapıcıların her biri aynı atamaları tekrar ediyorsa bakım zorlaşır. this() ile en genel yapıcıya yönlendirirsen ortak kod tek yerde durur. Yeni bir alan eklediğinde yalnızca o yapıcıyı güncellersin.

Çalışma sırası şöyledir: önce this(...) ile işaret edilen yapıcı tamamen çalışır, sonra çağıran yapıcının gövdesi çalışır. Böylece temel atamalar her zaman önceden yapılmış olur.

Uygulama Point sınıfında this() ile zincirle

Point sınıfına public int X { get; set; } ve public int Y { get; set; } özelliklerini ekle. İki yapıcı tanımla: birincisi public Point(int x, int y), gövdede X = x; Y = y; ata. İkincisi public Point() : this(0, 0) { } ile birinciye zincirlensin. Main içinde new Point() ile örnek oluştur ve X'i yazdır.

Örnek çözümü göster
this(0, 0) ile başlasın. Main içine Point p = new Point(); Console.WriteLine(p.X); yaz.
Örnek çözüm:
using System;

class Point
{
    public int X { get; set; }
    public int Y { get; set; }

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }

    public Point() : this(0, 0)
    {
    }
}

class Program
{
    static void Main()
    {
        Point p = new Point();
        Console.WriteLine(p.X);
    }
}

Kendini test et

  1. this(0, 0) ne yapar?

    public Point() : this(0, 0) { }
    • Statik bir alan atar
    • Bir metot çağırır
    • Döngü başlatır
    • Başka bir yapıcıyı çağırır
    Cevabı göster

    Başka bir yapıcıyı çağırır — Doğru. this(0, 0) iki parametreli yapıcıya yönlendirir.

  2. this() çağrısını tamamla

    public Point() : ____(0, 0) { }
    Cevabı göster
    public Point() : this(0, 0) { }
  3. this() kullanımını amacına eşle

    : this(0, 0)
    Aynı sınıfa zincirler
    public Point()
    Çağıran yapıcı
    this
    Geçerli sınıf
    (0, 0)
    Aktarılan argümanlar

Orta seviye bölümündeki tüm dersler