Bu Kod Neden Çalışıyor C#

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zeybekustasi
    zeybekustasi's avatar
    Kayıt Tarihi: 24/Mayıs/2012
    Erkek

    Ciddi soruyorum bu kod neden çalışıyor, kendim yazdım ama sonradan kafam karıştı.

    Sorum şu, comboboxtan gelen sayıyı aldıktan sonra o sayı kadar for döngüsü çalışıyor.

    Döngü her döndüğünde bir tane text box açılmasını istiyorum. Bunun için Textbox sınıfından txt diye bir nesne yaptım.

    Sonra bu txt ' nin name alanına döngü döndükçe farklı isimler verdim.

     

    Analamadığım nokta:

    Döngü her döndüğünde hep aynı isimli yani txt adlı nesne yaratılıyor.

    Bu txt nin name alanına txt1 - txt2 diye isim veriliyor.

    Her text alanı, bağımsız birer txt1 - txt2 isimleriyle kullanılabiliyor.

    Bu nasıl oluyor ?

    Döngü her döndüğünde hepp txt diye nesne yaratıp duruyor. Bunların isimleri farklı olması gerekmez mi ?

    Sonuçta aynı adlı nesneye alan verip duruyorsun new TextBox(); diyerek.

    Doğru çalışıyor ama anlamadım olayı...

     

     private void ekleButon_Click(object sender, EventArgs e)
            {
                int adet = Convert.ToInt32(cmbAdet.SelectedItem);
                for (int i = 0; i < adet; i++)
                {
                    
                    TextBox txt = new TextBox();
                    txt.Location = new Point(130, (i + 1) * 60);
    
                    txt.Name = "txt" + i.ToString();
    
                    this.Controls.Add(txt);

     

     


    https://www.youtube.com/watch?v=WC3-71NKwPw
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    break point koyarak i değerine bi bak hocam.. isimlerinin (name) txt olduğunu nasıl biliyorsun ? 

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zeybekustasi
    zeybekustasi's avatar
    Kayıt Tarihi: 24/Mayıs/2012
    Erkek
    unbalanced bunu yazdı

    break point koyarak i değerine bi bak hocam.. isimlerinin (name) txt olduğunu nasıl biliyorsun ? 

    Baktım şimdi eğer seni doğru anladıysam,

    txt0 txt1 ... diye değer alıyor.

    Kafamı karıştıran nokta,

    her döngüde yeni bir nesneyi aynı isimle yapmak bana saçma geliyor.

    Acaba aynı adlı olsa bile her new çağrısı ile aynı isimli nesneye farklı alanlar mı tahsis ediliyor ?

    Var mı böyle bir şey...

     

     


    https://www.youtube.com/watch?v=WC3-71NKwPw
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    geniuss
    geniuss's avatar
    Kayıt Tarihi: 12/Nisan/2007
    Erkek
    zeybekustasi bunu yazdı
    unbalanced bunu yazdı

    break point koyarak i değerine bi bak hocam.. isimlerinin (name) txt olduğunu nasıl biliyorsun ? 

    Baktım şimdi eğer seni doğru anladıysam,

    txt0 txt1 ... diye değer alıyor.

    Kafamı karıştıran nokta,

    her döngüde yeni bir nesneyi aynı isimle yapmak bana saçma geliyor.

    Acaba aynı adlı olsa bile her new çağrısı ile aynı isimli nesneye farklı alanlar mı tahsis ediliyor ?

    Var mı böyle bir şey...

     

     

    soyle yaparsan

                foreach (Control x in this.Controls)
                {
                    if (x is TextBox)
                    {
                        MessageBox.Show(((TextBox)x).Name);
                        MessageBox.Show(((TextBox)x).Text);
                    }           
                }

    hepsinin ismi txt oldugunu gorurursun 

    sen burda object yaratigin ismi ayni olmasi onemli degil ,  zeybekustasi diye bi class yarat sonra ona isim ve lokasyon  diye bi property ver ondan sonra kontroler diye baska bi class yarat onun icinde zeytinburnu klasindan objekleri alan ve bi arraya atayan bi funksion yazsan istedigin kadar zeybekustasi objesi yaratip o funksiona atabilirsin sonra o diger objekeki o arrayi okudugunda tum objektlerin isim ve lokasyon property sine ulasabilirsin objektlerin isimleri ayni olmasi onemli degil cunku tum objeler arrayin icinde, anlatma yetenegim baya zayif umarim yarim yamalakta olsa bi seyler anlayabilirsin.

    geniuss tarafından 05/Eyl/14 14:51 tarihinde düzenlenmiştir
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    hocam aynı isimden kastın nedir anlamadım :)

    new ile yarattığın nesneler bellekte ayrı bir yer işgal ederler. bunların birbiriyle bağlantısı yok. eğer kast ettiğin text özelliği ise onun aynı olmasında sorun yok. Ama kast ettiğin name ise, aynı isimle zaten olamaz formda. senin kodunda da txt0, txt1... diye oluşturuyor. yani ortada bir problem görünmüyor.. 

    ----

    üstteki arkadaşın yazdığından anladım soruyu. senin kast ettiğin değişkenin adı. yani sen 

    TextBox txt

     

    burada txt ismine takılmışsın. Bu sadece nesnenin ismi ve bir önemi yok. Ancak döngü bittikten sonra bu nesneye bir daha erişemezsin, ve yeni txt nesnesi oluşturduğunda bu da belleğin farklı bi alanına adreslenir

    unbalanced tarafından 05/Eyl/14 14:50 tarihinde düzenlenmiştir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    geniuss
    geniuss's avatar
    Kayıt Tarihi: 12/Nisan/2007
    Erkek
    unbalanced bunu yazdı

    hocam aynı isimden kastın nedir anlamadım :)

    new ile yarattığın nesneler bellekte ayrı bir yer işgal ederler. bunların birbiriyle bağlantısı yok. eğer kast ettiğin text özelliği ise onun aynı olmasında sorun yok. Ama kast ettiğin name ise, aynı isimle zaten olamaz formda. senin kodunda da txt0, txt1... diye oluşturuyor. yani ortada bir problem görünmüyor.. 

                foreach (Control x in this.Controls)

                {

                    if (x is TextBox)

                    {

                        MessageBox.Show(((TextBox)x).Name);

                        MessageBox.Show(((TextBox)x).Text);

                    }           

     

                }

    sunu deneyebilirsin  hepsinin isminin txt oldugunu goruceksin txt0,txt1 degil.  onemli olan control bi array ve bunun icinde olmasi

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zeybekustasi
    zeybekustasi's avatar
    Kayıt Tarihi: 24/Mayıs/2012
    Erkek
    unbalanced bunu yazdı

    hocam aynı isimden kastın nedir anlamadım :)

    new ile yarattığın nesneler bellekte ayrı bir yer işgal ederler. bunların birbiriyle bağlantısı yok. eğer kast ettiğin text özelliği ise onun aynı olmasında sorun yok. Ama kast ettiğin name ise, aynı isimle zaten olamaz formda. senin kodunda da txt0, txt1... diye oluşturuyor. yani ortada bir problem görünmüyor.. 

    ----

    üstteki arkadaşın yazdığından anladım soruyu. senin kast ettiğin değişkenin adı. yani sen 

    TextBox txt

     

    burada txt ismine takılmışsın. Bu sadece nesnenin ismi ve bir önemi yok. Ancak döngü bittikten sonra bu nesneye bir daha erişemezsin, ve yeni txt nesnesi oluşturduğunda bu da belleğin farklı bi alanına adreslenir

    (:

    Benim bildiğim -yanlışsan düzeltin- text in name alanı onun nesne adı oluyor. Yani sürükle bırakla yapınca sağ panelde name kısmında yazan şey textbox1 onun nesne adı oluyor diye biliyorum. 

    Bence hatam burada.

    Yani, name alanı bir textbox için TextBox sınıfının nesne adı anlamına geliyor mu gelmiyor mu 1. sorum bu ?

     

    zeybekustasi tarafından 05/Eyl/14 14:55 tarihinde düzenlenmiştir

    https://www.youtube.com/watch?v=WC3-71NKwPw
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    işler karıştı hocam anlamadım demek istedğini. özel mesajına cvp verdim, yeterli değilse teamviewer ver adım adım anlatayım neyse sorun. ben de tam anlamadım ne demek istediğini. 

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zeybekustasi
    zeybekustasi's avatar
    Kayıt Tarihi: 24/Mayıs/2012
    Erkek
    geniuss bunu yazdı
    zeybekustasi bunu yazdı
    unbalanced bunu yazdı

    break point koyarak i değerine bi bak hocam.. isimlerinin (name) txt olduğunu nasıl biliyorsun ? 

    Baktım şimdi eğer seni doğru anladıysam,

    txt0 txt1 ... diye değer alıyor.

    Kafamı karıştıran nokta,

    her döngüde yeni bir nesneyi aynı isimle yapmak bana saçma geliyor.

    Acaba aynı adlı olsa bile her new çağrısı ile aynı isimli nesneye farklı alanlar mı tahsis ediliyor ?

    Var mı böyle bir şey...

     

     

    soyle yaparsan

                foreach (Control x in this.Controls)
                {
                    if (x is TextBox)
                    {
                        MessageBox.Show(((TextBox)x).Name);
                        MessageBox.Show(((TextBox)x).Text);
                    }           
                }

    hepsinin ismi txt oldugunu gorurursun 

    sen burda object yaratigin ismi ayni olmasi onemli degil ,  zeybekustasi diye bi class yarat sonra ona isim ve lokasyon  diye bi property ver ondan sonra kontroler diye baska bi class yarat onun icinde zeytinburnu klasindan objekleri alan ve bi arraya atayan bi funksion yazsan istedigin kadar zeybekustasi objesi yaratip o funksiona atabilirsin sonra o diger objekeki o arrayi okudugunda tum objektlerin isim ve lokasyon property sine ulasabilirsin objektlerin isimleri ayni olmasi onemli degil cunku tum objeler arrayin icinde, anlatma yetenegim baya zayif umarim yarim yamalakta olsa bi seyler anlayabilirsin.

    Anlaşılmıştır çok teşekkür ederim :)


    https://www.youtube.com/watch?v=WC3-71NKwPw
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek
    zeybekustasi bunu yazdı
    unbalanced bunu yazdı

    break point koyarak i değerine bi bak hocam.. isimlerinin (name) txt olduğunu nasıl biliyorsun ? 

    Baktım şimdi eğer seni doğru anladıysam,

    txt0 txt1 ... diye değer alıyor.

    Kafamı karıştıran nokta,

    her döngüde yeni bir nesneyi aynı isimle yapmak bana saçma geliyor.

    Acaba aynı adlı olsa bile her new çağrısı ile aynı isimli nesneye farklı alanlar mı tahsis ediliyor ?

    Var mı böyle bir şey...

     

     

    Aynı isimle oluşturmuyorsun ki. Sadece oluşturduğun nesnelerin referansını aynı değişkene aktarıp işliyorsun. "TextBox txt"

    txt değişkenine her oluşturduğun nesnenin referansını eşitliyorsun ki txt değişkeni ile işlem yapabilirsin.

    Istersen her biri için ayrı değişkende oluşturabilirsin ki. List ile bunu yapabilirsin.


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zeybekustasi
    zeybekustasi's avatar
    Kayıt Tarihi: 24/Mayıs/2012
    Erkek

    unbalanced yakşalık 40 dakkadır bir sürü soruyu team den yanıtları :)

    buradan teşekkürlerimi iletiyorum :))


    https://www.youtube.com/watch?v=WC3-71NKwPw
Toplam Hit: 901 Toplam Mesaj: 15