none
Sınıf hakkında bir soru RRS feed

  • Soru

  • S.a aşağıdaki göründüğü gibi sınıfı for döngüsüyle 100 oluşturuyorum burda  sormak istediğim şu burda RAM'in Stack bölümünde bir obj isimli bir referans adı oluşuyor ve Heap'te alan tahsitatı yapılıyor burdaki static alanı sınıf her oluştuğunda bir değer alıyor burda anlamadığım obj isminde 100 tane nesnemi oluşuyor Bellekte yada 100 defa onun Yapıcı metodumu çağırılıyor ? cevaplarınız için şimdiden teşekkür ederim

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication4
    {
        class CountInst
        {
            static int myCounter=0;
    
            public CountInst()
            {
                myCounter++;
                Console.WriteLine("Constructor :"+myCounter);
            }
    
            ~CountInst()
            {
                myCounter--;
                Console.WriteLine("Destructor :" + myCounter);
            }
    
            public static int GetCount()
            {
                return myCounter;
            }
    
    
        }
    
        class Program
        {
            static void Main(string[] args)
            {
    
                CountInst obj;
                for (int i = 0; i < 100; i++)
                {
                    obj = new CountInst();
                    Console.WriteLine("Static Counter :"+CountInst.GetCount());
                }
                Console.ReadKey();
            }
        }
    }
    


    23 Aralık 2012 Pazar 07:32

Yanıtlar

  • zaten bir nesne oluşturulduğunda onun yapıcı metodu otomatik çalışır. nesneyi oluşturduğunuzda stack bölümünde nesnenin heapdeki adresi heap içinde de nenenin kendisi bulunur 100 tane nesne oluşturursanız heap de elbetteki 100 tane nesne bulunur.

    burhansuleymanvural@windowslive.com

    24 Aralık 2012 Pazartesi 18:41
    Yanıtlayıcı

Tüm Yanıtlar

  • zaten bir nesne oluşturulduğunda onun yapıcı metodu otomatik çalışır. nesneyi oluşturduğunuzda stack bölümünde nesnenin heapdeki adresi heap içinde de nenenin kendisi bulunur 100 tane nesne oluşturursanız heap de elbetteki 100 tane nesne bulunur.

    burhansuleymanvural@windowslive.com

    24 Aralık 2012 Pazartesi 18:41
    Yanıtlayıcı
  • Ek olarak, static metotlar ve field'ler 100 nesne oluştursanız da 1 tane olacaktır çünkü static ifadeler tür'e hastır instance'a değil. Fakat Burhan'bey in dediği gibi o nesnenin kendisinin 100 adet instance'ı olduğu için 100er adet yer işgali yapacaktır ve 100 defa yapıcı metot çağrılacaktır ama 1er tane GetCount() metodu ve mycounter nesnesi olacaktır.


    25 Aralık 2012 Salı 17:27
  • Aleykumselam,

    Diğer arkadaşlarımız mevzuyu çok güzel anlatmışlar.

    Ek olarak şunu demek istiyorum. Döngün boyunca 100 adet obje oluşturuluyor. Ancak döngü sonunda önceki objenin işi bitmiş oluyor. Kısa süre içerisinde Garbage Collecter o nesneyi ramdan kaldıracaktır. Çok takılmana gerek yok.

    Static olanlar ise zaten bir kere oluşturulur.

    Kolay Gelsin.


    Tekno Gelişim_Software Developer

    26 Aralık 2012 Çarşamba 10:28