Şimdi Ara

c# base ile iligli bir soru :

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
5
Cevap
0
Favori
590
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj

  • using System;


    class Temel
    {
    public int a;
    }
    class Tureyen : Temel
    {
    new int a;
    base.a = 15;//<--hatanın olduğu yer.
    }


    burada neden hata alıyorum ?



  • Yapıcı metod kullanman gerek. Instance variable a metod dışından erişemezsin.

     
    class Tureyen : Temel
    {
    new int a;

    public Tureyen()
    {
    base.a = 15;
    }
    }
  • bersgurs kullanıcısına yanıt
    instance bir sınıftan nesne üretirken diyoruz variable ise değişken demek ama bunları birleştirince bir anlam çıkaramadım yani instance variable ne demek ?
  • su an yazdigin kod suna benziyor:

    class A
    {
    int asd;
    asd = 12;
    }

    base'e ozel bir durum yok.

    bak mesela ustteki yerine sunu yazsaydin bunun adi instantiation
    int asd = 12;
    ve bunu classin icinde direkt yazabilirsin cunku ilk degeri vermissin

    classin icinde declaration veya instantiation yapabilirsin
    ama declaration yapip sonra ayriyetten assignment yapamazsin (ustteki class A daki gibi.)

    o yuzden constructor (yapici metod) kullanmalisin senin durumunda. veya classin icindeki herhangi bir metodda kullanabilirsin.

    base.a dedigin de zaten base yokmus gibi gecerli bu dedigim.

    -------------

    terimlere de aciklik getireyim once senin sorduklarin:

    instance demek o class turunde bir nesne, object.
    variable dedigin gibi degisken demek ornegin: int a = 12;
    burada a, int turunde bir degisken. int dedigimiz arka planda Int32 demek. yani bu a, aslinda Int32 class'inin bir instance'i. (Int32 aslinda class degil ama oyleymis gibi dusunebilirsin)

    instance olusturma yani nesne olusturma new anahtar kelimesiyle yapilir.
    constructor yani yapici metod var ya hani public ClassIsmi() {} diye tanimlarsin.
    bunu su sekilde cagiriyorsun: new ClassIsmi()
    yani bu constructor metodunun ismi class ismi ile ayni gibi dusun, normal metod gibi cagir ama basina new ekle.
    bu sana o classin bir instance'ini verir, tabii constructor'da yapilacak islemler yapilmis oldu o nesne uzerinde.

    ustte yazdigim seyler;
    declaration, tanimlama, int a; seklinde
    assignment, atama. a = 12; seklinde
    instantiation, olusturma. int a = 12; seklinde ki buna declaration + assignment da diyebilirsin ama instantiation daha dogru.
    burada int ornegi verdim ama istedigin class icin uygulayabilirsin bunu. tabii 12 yerine new ClassIsmi(); seklinde olur.
    dedigim gibi int de aslinda bir classtir bir nevi. class'lar reference type'tir. bu durumda Int32, Int16, Int64 (int, short, long), double ve float gibi olanlara Struct deniyor turkcesi Yapi seklinde gecer. Bunlar value type'tir yani deger tipi. reference vs value type arastirabilirsin onemli bir konu ve kafani belki karistirabilir. (string bir struct degildir classtir)

    tam anlatamadiysam soyle daha iyi anlatmaya calisayim veya baskasi anlatir en azindan.




  • anladım çok sağ ol üstat :)
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.