İf ... else ifadeleri
if ... else ifadeleri koşullu dallanma ifadeleridir.
Genel biçimi:
Alıntı
ifade
[else
İfade ]
[size=3][font="Times New Roman"]Koşul deyimi if kısmında test edilir. Sonuc doğru ise if bloğu icra edilir. if koşullu dallanma ifadesi opsiyonel olarak bir else bloğuda bulundurabilir. Eğer sonuç yanlış ise else bloğu icra edilir. Else ifadesi kullanılmamış ise if ifadesinden sonraki satırdan programın akışı devam eder.
if ifadesi boolean bir koşul deyimi alır. Yani if kısmında koşul test edilirken true veya false olarak test edilir.
Alıntı
int y = 20;
if( x > y )
Console.WriteLine("ifade dogru");
else
Console.WriteLine("ifade yanlis");
Şöyle bir kullanımda derleyici hata verecektir.
Alıntı
Console.WriteLine("ifade dogru");
else
Console.WriteLine("ifade yanlis");
Cannot implicitly convert type 'int' to 'bool'
switch ifadeleri
switch koşullu dallanma ifadeleri iç içe if ifadelerine bir alternatiftir.
Genel biçimi:
Alıntı
{
case sabit-deyim:
ifadeler
dallanma-ifadesi
[default:
ifadeler
}
Sizin de gördüğünüz gibi switch parantezleri arasındaki deyimin alabileceği değerler case kısmında belirtilmektedir. Bu kosula göre ilgili case deyimi icra edilmektedir. Burada dikkat ederseniz bir dallanma ifadesi vardır. Bu ifade genel olarak break ifadesidir ve kullanılması zorunludur. Daha doğrusu c# da kullanımı zorunlu hale getirilmiştir. Amaç gerekli case deyimi icra edildikten sonra diğer case deyimlerine dallanmasın yani daha güvenli bir kullanımdır.
Alıntı
switch(x)
{
case 0:
Console.WriteLine("0");
case 10:
Console.WriteLine("10");
case 20:
Console.WriteLine("20");
}
Yukarıdaki kullanıma baktığımızda herhangi bir hata göze çarpmamaktadır. Ancak c# da bu kullanım derleyicinin hata vermesi ile sonuclanacaktır. Çünkü case deyimlerinde muhakkak bir break ifadesi olmalıdır. Yani akış diğer case ifadelerine akmamalıdır.
Control cannot fall through from one case label ('case 0:') to another
Control cannot fall through from one case label ('case 10:') to another
Control cannot fall through from one case label ('case 20:') to another
Alıntı
{
case 0:
Console.WriteLine("0");
break;
case 10:
Console.WriteLine("10");
break;
case 20:
Console.WriteLine("20");
}
Yukarıdaki kullanımda break ifadesi case deyimlerinde kullanılmıştır. Bir tek son case deyiminde kullanılmamıştır. Ancak yine de derleyici hata verecektir. Bu son satırda derleyicinin bir hata vermesine gerek yoktur aslında. Çünkü son case deyimidir bundan sonra başka bir case deyimine akmayacaktır ama yinede derleyici hata vermektedir.
Control cannot fall through from one case label ('case 20:') to another
Aslında swicth deyiminin ara koduna (İL) baktığımızda her bir case deyiminin aslında bir label olduğunu görmekteyiz. Yani biz programlarımızda çeşitili label lar tanımlayabiliriz, ve bu label lara goto ifadesi ile programın akışını yönlendirebiliriz. Sizlerin bir switch ifadesi gördüğünüzde aklınıza gelecek olan şey case deyimlerinin bir label gibi davrandığıdır.

















