Yükleniyor...

this

size adlı bir int alanı ve this.size = size; yapan bir Tin(int size) yapıcısı olan Tin sınıfını yazın. Pine içinde Main'i tutun ve Tin t = new Tin(7); ile bir tin kurun, sonra t.size yazın. Her iki türü aynı öğretim dosyasında tutun; böylece dotnet run sade kalır. dotnet run ile çalıştırın. Ekran tek satır göstermelidir: 7. Parametre ile alan size adını paylaşır. this sözcüğü nesnedeki alanı adlandırır; böylece saklama doğru yere ulaşır. Adlar çarpışınca this kullanmak bu sayfanın öğrettiği şeydir. Başlangıç genel sınıf adını Pine tutun.

Aynı ad neden this ister

Yapıcılar sayfasında parametre n, alan ise size idi; bu yüzden size = n; açıktı. Burada her iki ad da size. Yapıcının içinde çıplak size parametre demektir. size = size; yazmak parametreyi kendisine kopyalar ve alanı varsayılanında bırakır. Nesnedeki alan hâlâ bir yazım ister. O yazım sol tarafta this.size kullanır.
Pine dosyasını açın. Başlangıç sınıf adı Pine kalır. Bu sayfa başlatıcıyı yeniden adlandırmaz. Hâlâ Main'de tuttuğunuz her şey bir Box b = new Box(4); yapıcı kalıntısıysa silin. Artakalan her Box sınıfını silin. Her ReadLine satırını silin. Tutacağınız dosyada yazı bekleyişi yoktur.
Pine'ın süslü parantezlerinin dışında — yine aynı dosyada — public class Tin yazın. Süslü parantezlerin içinde int size; bildirin. Sonra yapıcıyı yazın: Tin(int size) { this.size = size; }. Bu sayfada Tin içinde Main yoktur. Çalıştırmadan önce dosyayı kaydedin.
Atamayı bir kez daha okuyun. Sağdaki size, parametreye gelen değerdir — burada 7. Soldaki this.size, kurulmakta olan nesnedeki alandır. Satır çalıştıktan sonra o nesnenin size'ı 7 tutar. this.'i kaldırıp size = size; tutarsanız ekran sonra 0 gösterir çünkü alan değişmemiştir.

Tin with this in constructor

csharp
using System;

public class Tin
{
    int size;

    Tin(int size)
    {
        this.size = size;
    }
}

Pine bir tin kurar

Pine public static void Main() tutmaya devam eder. Main içinde Tin t = new Tin(7); sonra Console.WriteLine(t.size); yazın. Argüman 7, yapıcı parametresi size olur. Yapıcı onu this.size = size; ile saklar. Bu sayfada ayrı bir t.size = 7; satırına ihtiyacınız yoktur. Bu sayfada Box b = new Box(4); yazmazsınız. O, yapıcılar dersiydi.

Pine builds one tin

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Tin t = new Tin(7);
        Console.WriteLine(t.size);
    }
}

public class Tin
{
    int size;

    Tin(int size)
    {
        this.size = size;
    }
}

Tutulan dosyayı yukarıdan okuyun. using System; kısa adları hazırlar. public class Pine başlatıcıdır. public static void Main() çalışma zamanının başladığı yerdir. new Tin(7) ifadesi bir Tin kurar ve Tin(int size)'i parametre eşittir 7 ile çağırır. Gövde this.size = size yazar; böylece nesnenin alanı 7 olur. Sonra Main t.size yazar ve ekran 7 gösterir.
dotnet run ile çalıştırın. Program bir satır yazar ve durur. Sizin bir şey yazmanızı beklemez. dotnet run bekliyorsa dosyada hâlâ ReadLine vardır. O satırı silin; Pine'da new Tin(7) ile yazmayı tutun, Tin içinde ise this.size = size; kalsın. Ekran 7 gösterir. Ekran 4 gösteriyorsa artakalan bir new Box(4) yolu hâlâ çalışıyordur. Ekran 0 gösteriyorsa yapıcı gövdesi muhtemelen this. olmadan size = size;'dir — this.'i sol tarafa geri koyun.
Yapıcı adının önüne void koyarsanız bu sıradan bir metot olur, yapıcı olmaz; new Tin(7) o gövdeyi bu sayfanın beklediği gibi çalıştırmaz. Başlık Tin(int size) gibi görünmelidir; void Tin(int size) değil.

this.size ve size yan yana

Kısa bir tablo, yapıcının içindeyken iki adı net tutar.

📊 this.size vs size

Name What it means in Tin(int size)
size alone the parameter that entered the constructor
this.size the field on the object being built
this.size = size; store the parameter into the field
size = size; does not update the field
Tablo yalnızca bir hatırlatmadır. Tutacağınız yazılan satır yapıcı içinde this.size = size;, sonra Pine'da Tin t = new Tin(7); ve Console.WriteLine(t.size);.

Yapıcılar sayfasıyla karşılaştırma

Yapıcılar sayfasında Box(int n) { size = n; } çalışıyordu çünkü n ile size farklı sözcüklerdi. O biçim hâlâ çalışır. Bu sayfa kasıtlı olarak aynı sözcüğü iki kez kullanır; böylece this gerekir. size = n; içeren artakalan bir Box demosu başka derstir. Bu sayfa için Tin ve Pine ile this.size = size; tutun.
Yalnız Console.WriteLine(t); yazmak temiz bir 7 göstermez. Saklanan sayıyı görmek için Console.WriteLine(t.size); yazın. Nesne referansı tek başına alan değeri değildir.
Başka günlerde hâlâ farklı bir parametre adı seçebilirsiniz. Bu ders eşleşen adları bilerek seçer. Bu sayfanın Tin demosunda n ile this'i karıştırmayın. Tek net yol yeter: eşleşen adlar, alanda this, alanı yazma.

İki tin hâlâ ayrı kalır

Her new Tin(...) yapıcıyı ayrı bir nesne için yeniden çalıştırır. Tin a = new Tin(2); ve Tin b = new Tin(9); yazıp her iki size alanını yazabilirsiniz. Her çağrı kendi nesnesinde this.size = size; yapar. İki nesne tek bir size yuvasını paylaşmaz. O kontrol için ikinci bir kod kutusu gerekmez — 7'yi gördükten sonra Pine'daki sayıları değiştirin ya da tek-tin demosunu kaydettiğiniz dosya olarak tutun.
Her iki satır da 0 gösteriyorsa yapıcıda solda hâlâ this yoktur. Derleme Pine'ı derlerken Tin'i bulamıyorsa public class Tin'in aynı dosyada olduğunu kontrol edin.

Bu sayfa örnek metotlara ne bırakır

Bu sayfa this'i yalnızca yapıcı içinde alan saklamak için kullanır. Sonraki sayfa — örnek metotlar — bir nesne üzerinde çalışan ve alanları okuyup değiştirebilen metotları gösterir. Burada yapıcıdaki saklamada kalın. Bu ders için Tin üzerinde ekstra metot uydurmayın; bilmiyorsanız uydurmayın. Dersin amacı adlar eşleşince this.size = size'dır.
Tin'i Pine'ın süslü parantezlerinin içine yuvalamayın. Bu sayfada iki sınıf dosyada kardeş olarak oturur. Pine'da yapıcı demosundan hâlâ Box b = new Box(4); varsa ve bu dosyada tutmak istediğiniz eşleşen bir Box sınıfı yoksa o satırı kaldırın. Tin t = new Tin(7); ile Console.WriteLine(t.size); tutun. Tin öğretirken derleme sizin için Box uydurmaz.

int size; bildirebilir, Tin(int size) { this.size = size; } yazabilir ve Pine.Main'den Tin t = new Tin(7); ile kurabilirsiniz. dotnet run ile çalıştırın. Ekran 7 gösterir. Parametre aynı adı kullanınca this sözcüğü nesnenin alanını adlandırır. Sayıyı kurulumda verdiniz, yapıcı this ile sakladı ve yazma saklamayı kanıtladı. Çıplak ad parametre anlamına geleceğinde this'i kurulmakta olan nesneye bir işaretçi gibi düşünün. Pine, dotnet run ile açtığınız kapı olarak kalır. Sonraki sayfa örnek metotlardır; nesne zaten varken nesne üzerindeki metotlar alanları kullanır.
Yapıcı başlığını void olmadan tutun. Alanda this. tutun. Yazmayı t.size üzerinde tutun. Bu üç alışkanlık, ilerlemadan önce bu sayfanın kontrol noktasıdır.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
6
Sorular
🎯
70%
Geçmek İçin
♾️
∞
Süre
🔄
∞
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek