İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C# anlamadım !!

kode09.02.20134 cevap1.374 görüntüleme
2013'den beri7 mesaj
#1
Arkadaşlar şu kısmı hiç anlamadım az internette yazanları pek fazla kafam basmıyor da kısaca özetler misiniz?

bool durum = false;

int sayac = listBox1.Items.Count;
string deger = null;

for (int i = 0; i < sayac; i++)
{
if (listBox1.Items.ToString() == textBox5.Text)
{
durum = true;
deger = listBox1.Items.ToString();
}
}
if (durum == false)
{
MessageBox.Show("Böyle bir T.C Bulunamadı!!");
}
else
{
listBox1.SelectedItem=deger;
}
Cevaplar
2012'den beri173 mesaj
#2
Selamlar,

            //Arama sonucuna göre Durum True ya da False olarak setlenecek.
            bool durum = false;

            //Sayac ListBox içerisinde bulunan satır sayısının değerini alır.
            int sayac = listBox1.Items.Count;
            string deger = null;

            //Döngü Sayac kadar yani List eleman sayısı kadar döner.
            for (int i = 0; i < sayac; i++)
            {
                //Textbox içerisine girilen değer döngü ile her bir 
                //ListBox elemanı içerisinde aranır.
                if (listBox1.Items[i].ToString() == textBox5.Text)
                {
                    //Eğer eşitlik var ise Durum true değerini alır.
                    durum = true;
                    //Değer değişkenine eşitik ile Listbox içerisinde bulunan değer setlenir.
                    deger = listBox1.Items[i].ToString();
                }
            }

            //Eğer durum False ise eşitlik yok demektir.
            if (durum == false)
            {
                //Bulunamadı mesajı
                MessageBox.Show("Böyle bir T.C Bulunamadı!!");
            }
            else //Else kısmında True değerine göre hareket edilir.
            {
                //Yukarıda Değer değişkenine eşitliğin bulunduğu satırdaki değer atanmıştı.
                //Atanan değer ListBox ın SelecteItem özelliğine setlenerek Liste üzerinden seçim yapılmaktadır.
                listBox1.SelectedItem = deger;
            }


Satırlamaların açıklamaları yukarıdaki gibidir.
Eğer bu kodu kullanacaksan kısa bir bilgi vermek isterim.
TC kimlik numarası unique yani benzersiz bir değerdir. Döngü ile ListBox içerisinde dönerken Listenin 100.000 satır olduğunu ve aradığın değerinde 2. satırda bulunduğu bir durumda yukarıdaki kod gereksiz yere diğer ListBox elemanları içerisinde de kontrol işlemini gerçekleştirecektir.
True ifadesini yakaladıktan sonra break ifadesi ile döngüden çıkarsan daha performanslı bir çalışma elde edebilirsin.

Örnek;


                if (listBox1.Items[i].ToString() == textBox1.Text)
                {
                    //Eğer eşitlik var ise Durum true değerini alır.
                    durum = true;
                    //Değer değişkenine eşitik ile Listbox içerisinde bulunan değer setlenir.
                    deger = listBox1.Items[i].ToString();
                    //Değer True ise döngüden çıkılır.
                    break;
                }


Başarılar dilerim.
2009'den beri1.652 mesaj
#3
hokumus kardeşimin uyarısına kulak vermeni öneririm...Konuyu okurken ilk yazmak istediğim gereksiz kontrol olayını hemen belirtmiş... Döngü içinde gereksiz kontrollerden hem performans hem kod kalitesi açısından kaçınmak iyi olacaktır.

Özellikle iş başvurularında, mülakatlarda kod kalitesine, temizliğine çok dikkat ederler..
Eline sağlık @hokomus ... Faydalı bir açıklama olmuş.
2007'den beri2.589 mesaj
#4
break bir seçenek olduğu gibi for döngüsü içinde clause kısmına (i < sayac && durum) gibi bir şey de yazılabilir. Bu da döngüyü kıracaktır. Bunu yazmamın nedeni; anlaşılmaz bir şekilde for döngüsünün ikinci field'i ( clause ) çook az kullanılıyor. Ya da bilinmiyor.
kode Konuyu açan
2013'den beri7 mesaj
#5
Çok saolun

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.