İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp

C# If Else Kullanımı ve İç İçe If Else

C# If Else Kullanımı ve İç İçe If Else
+ - 0

C# If Else Kullanımı ve İç İçe If Else dersi ile C# eğitimlerimize devam edelim.  If Else, C# de belki en çok kullandığımız kontroldür. Ortada bir şart var ise aklımıza gelen ilk şey If Else dir. İf elseyi öğrendikten sonra iç içe if else yazmaya da başlarız.

C# hakkındaki diğer derslerim için tıklayınız.

Programlama hakkındaki makalelerim için tıklayınız.

If ‘in anlamı EĞER ‘dir. ELSE ‘nin anlamı ise DEĞİLSE’dir. Örnek olarak;

If (Degisken == 1)
{
    // Koşul Doğruysa İşlemlerimi Yap
}
Else
{
    //Koşul Doğru Değilse İşlemlerimi yap
}

Şeklindedir ve en basit kullanım şekli budur.

Bazen birden fazla şartımız olur ve tüm şartlarımız doğru ise ilgili işlemlerin yapılmasını isteriz.

If (Degisken1 == 1 & Degisken2 == 2 & Degisken3 == 3)
{
    // Tüm Koşullar Doğruysa İşlemlerimi Yap
}
Else
{
    // Koşullardan biri bile Doğru Değilse İşlemlerimi yap
}

Bu örneğimizde koşulları “ve” ile yazdık. Burada Koşullarım tamamı doğruysa if içerisindeki kodlar işletilir. Biri bile yanlışsa else içerisindeki kodlar işletilir. Tek  “&” simgesi yada çift “&&” simgesi de yazabiliriz. İkisi de kabul edilir.

If (Degisken1 == 1 || Degisken2 == 2 ||Degisken3 == 3)
{
    // Koşullardan herhangi biri Doğruysa İşlemlerimi Yap
}
Else
{
    //Koşulların Hiçbiri Doğru Değilse İşlemlerimi yap
}

Bu örneğimizde ise koşullarımızın aralarına ” || ” işareti koyduk. Bu işaretin anlamı ise “veya” demektir. Koşullardan biri bile doğru ise if içerisindeki kodlar işletilir. Tamamı yanlışsa else içerisindeki kodlar işletilir.

NOT: If kullanımında sadece koşul doğru ise işlem yapılsın. Doğru değilse hiçbir işlem yapılmasın derseniz. Sadece If bloğunu kullanırsınız. Yani Else bloğunu hiç yazmadan sadece If yazarsınız.

Bu kullanım şekli en çok bir kayıt işleminde boş geçilemez alanlar olsun istiyorsak kullanırız. Örneğin, 5 adet textbox’un boş geçilememesini istiyorsak koşulları “||” operatörü ile yazarız. Bu şekilde o 5 textbox’tan biri dahi boş olsa kayıt işlemi gerçekleşmez.

Son olarak If, Else If, Else ile if anlatımını bitirip iç içe if else kullanımına geçelim.

If (Degisken == 1)
{
    // Koşul Doğruysa İşlemlerimi Yap
}
Else If (Degisken == 2)
{
    //Koşul Doğru Değilse yeni bir koşula bakarak işlemlerimi yap
}
Else If  (Degisken == 3)
{
    //Koşul Doğru Değilse yeni bir koşula bakarak işlemlerimi yap
}
Else
{
    //Hiçbiri Doğru Değilse işlemlerimi yap
}

Bu örnekte;

Değişken 1 ise şu işlemleri yap; değişken 1 değil, 2 ise şu işlemleri yap; 2 ‘de değil 3 ise şu işlemleri yap, hiçbiri de değilse şu işlemleri yap demiş olduk.

Şimdi de iç içe If Else ‘ye geçelim

Burada vereceğim iç içe if else örneği bir projemde kullandığım kodlardan alınmıştır.

private void BTN_KAYDET_Click(object sender, EventArgs e)
        {
            string mailler = "";
            if (MailList.Count > 0)
            {
              // mail listemiz boş değilse aşağıdaki işlemleri yapacak...

                if RECno == 0)// Eğer bu işlem için bir RECno yoksa bu işlem bir INSERT işlemidir.
                {
                  //...
                  // INSERT Bloğu
                  //...
                    if (sql.ok == 1)//SQL işlemleri için kullandığım classtan gelen bir değer. 
                    {
                        //Eğer değer 1 ise INSERT başarılıdır.
                        MessageBox.Show("Kayıt başarılı");

                        for (int i = 0; i < MailList.Count; i++) 
                            { 
                               mailler += MailList + ","; 
                            }
                        //burada Mailler adlı List içerisindeki mail adreslerini aralarına
                        //virgül atarak yan yana yazdık
                        mailler = (mailler.Substring(0, mailler.Length - 1));
                        //bu kod ise en sonra kalan virgülü silmek içindir.                          
                          
                        if (SendMail.SendMailLocal(mailler, "Bildirim" ,"Mail İçeriği", "Sistem", "") == true)
                            MessageBox.Show("Mailler Gönderildi.");

                           // Mail gönderme class'ı bir bool değer döndürüyor.                                               
                           // dönen değer True ise mail gönderilmiştir.
                           // NOT: if içerisinde tek satır kod kullanacaksanız "{}"
                           // açmanıza gerek yoktur.
                    }
                    else
                        MessageBox.Show("Kayıt başarısız");
                       // Classdan gelen " OK " değişkeni  1 olmadğı için kayıt başarısız.
                }
                else
                {
                    if (Durum == "Açık" & YetkiliKisi == Global.AktifKullanici)
                    {
                        //...
                        // UPDATE Bloğu
                        //...
                        if (sql.ok == 1)
                        {
                          //sql classından gelen bir kontrol. 1 ise güncelleme başarılıdır.                            
                            MessageBox.Show("Güncelleme başarılı");

                            for (int i = 0; i < MailList.Count; i++) 
                               { 
                                  mailler += MailList + ","; 
                               }
                          //burada Mailler adlı List içerisindeki mail adreslerini aralarına
                          //virgül atarak yan yana yazdık
                            mailler = (mailler.Substring(0, mailler.Length - 1));
                          //bu kod ise en sonra kalan virgülü silmek içindir.                          
                          
                         if (SendMail.SendMailLocal(mailler, "Bildirim", "Mail İçeriği","Sistem", "") == true)
                        }
                        else
                        {
                            MessageBox.Show("Güncelleme başarısız");
                           // Classdan gelen " OK " değişkeni  1 olmadğı için güncelleme başarısız.
                            Close();
                        }
                    }
                    else
                        MessageBox.Show("Bu kayıt kapatılmış yada düzenleme yetkiniz yok. ");
                       // Durum açık olmadığı ve YetkiliKisi aktif kullanıcı olmadığı için
                       // bu mesajı gösterdik.
                }
            }
            else
                MessageBox.Show("Hiç mail adresi seçmediniz.");
                // mail gönderilecek kişi seçilmediği için buraya geçti.
                // bunu yaptık çünkü hiç mail seçilmezse for döngüsünde hata verecektir.
        }

Evet arkadaşlar kodlar bu kadar gördüğünüz gibi bir sürü iç içe if else var ve karmaşık görünüyor. bu işlemlerin çok daha kısa yolu elbette vardır. Aceleye geldiği için oturup düzgünce kafa yoramadığım için bu şekilde uzun oldu. :)

İsterseniz birde hem daha az kod ile hemde daha düzenli bir şekilde bu işlemleri nasıl yapabiliriz ona bakalım :)

private void BTN_KAYDET_Click(object sender, EventArgs e)
        {
            string mailler = ""; bool MailGonder = false;
            for (int i = 0; i < MailList.Count; i++)
            {
                mailler += MailList + ",";
            }
            mailler = (mailler.Substring(0, mailler.Length - 1));
            if (MailList.Count > 0)
            {
                if (RECno == 0)
                {
                    //...
                    // INSERT Bloğu...
                    //...
                    if (sql.ok == 1)
                    {
                        MessageBox.Show("Kayıt başarılı");
                        MailGonder = true;
                        Close();
                    }
                    else
                        MessageBox.Show("Kayıt başarısız");
                }
                else
                {
                    if (Durum == "Açık" & YetkiliKisi == Global_System.AktifKullanici)
                    {
                        //...
                        // UPDATE Bloğu
                        //...
                        if (sql.ok == 1)
                        {
                            MessageBox.Show("Güncelleme başarılı");
                            MailGonder = true;
                            Close();
                        }
                        else
                            MessageBox.Show("Güncelleme başarısız");
                    }
                    else
                        MessageBox.Show("Bu kayıt kapatılmış yada düzenleme yetkiniz yok. ");
                }
            }
            else
                MessageBox.Show("Hiç mail adresi seçmediniz.");

            if (MailGonder == true)
            {
                if (SendMail.SendMailLocal(mailler, "Bildirim", "Mail İçeriği", "Sistem", "") == true)
                    MessageBox.Show("Mailler Gönderildi.");
            }
        }

iç içe if else ‘mizden 5 yada 6 satır kod azalttık ama ilkine göre çok daha düzenli ve anlaşılır oldu.


NOT 1: 100 satırda yapılacak bir işlemi 10 satırda yapabilmek için o 100 satırı defalarca yazmak gerekir. O kadar kodu defalarca yazmaktan bıkmaya başladığında kısa yolları görmeye başlarsın. :)

NOT 2: Proje genelinde aynı kodu yada kod bloğunu iki kere bile yazıyorsan o kodlardan şüphelen. Çünkü o kodları bir kere yazıp defalarca kullanabileceğin bir yol mutlaka vardır. (Yukarıdaki örneği inceleyerek de bu sözümü anlayabilirsiniz ;) )

NOT 3: Çok satır kod yazmakla övünen biri asla profesyonel bir yazılımcı olamaz. Profesyonellik çok az koda bir sürü işlem yaptırabilen kişidir. Yani bugün şu kadar satır kod yazdım diyen adam benim gözümde hiçbir zaman pro olamaz.

Yazılıma Başlamak Mı İstiyorsunuz? Görmeniz Lazım! yazımda bu notları uzun uzun açıkladım. Görmek isterseniz tıklayınız.


C# hakkındaki diğer derslerim için tıklayınız.

Programlama hakkındaki makalelerim için tıklayınız.

Bu dersimiz de bu kadar dostlar. Umarım açıklayıcı olmuştur. Aklınıza takılan soruları kesin yorum olarak yazın. Kesinlikle yardımcı olmaya çalışacağım.

C Sharp Eğitim Seti ve ERP Programlama eğitimi sayfasına gitmek için tıklayınız.

Sağlıcakla ve takipte kalın. ?

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)