Her ne kadar Java dünyasından gelmiş birisi olsam da şartlar beni .NET ile uygulama geliştirmeye itti diyebilirim. Bu konularda derinlemesine bilgi sahibi değilim, ancak C# ile uygulama geliştirirken karşılaştığım ve öğrenip kullandığım, küçük ama faydalı olabilecek kodlama pratiklerini paylaşmak iyi olur diye düşündüm. Bu ilk yazıda ? ve ?? operatörleri üzerinde durmak istiyorum.
? Operatörü
Bu operatör koşul operatörü olarak adlandırılabilir. Koşul operatörünü tek satırlık if else bloklarını sadeleştirmek için kullanabiliriz. Örneğin:
int a;
int b;
int max;
if (a > b)
max = a;
else
max = b;
Yukarıdaki ifadeyi koşul operatörünü kullanarak daha kısa bir biçimde yazmak mümkündür.
int a;
int b;
int max;
max = (a > b) ? a : b;
Yukarıdaki kod a > b koşuluna bakacak, sonuç doğru ise a’yı, yanlış ise b’yi max değişkenine atayacaktır. Koşul operatürünü aşağıdaki gibi if else merdivenlerini sadeleştirmek için de kullanabiliriz.
public int Karsilastir(int a, int b)
{
return (a > b) ? 1 : (a < b) ? -1 : 0;
}
Yukarıdaki metot a ile b yi karşılaştırıp, a b'den büyükse 1, küçükse -1, a ile b eşitse 0 döndürmektedir. Bu şekilde bir kullanım mümkün olsa da, okunabilirlik açısından ne kadar doğru olduğu tartışılabilir. Koşul operatörü C#'a özgü birşey değil, birçok programlama dilinde bunu görmeniz mümkün ancak ?? operatörü ile benzerlik gösterdiği için önce koşul operatöründen bahsetmek istedim. Şimdi ?? operatörü ile devam edebiliriz.
?? Operatörü
Açıkçası bunun adını ben de bilmiyorum ama yaptığı işe bakarak null karşılaştırma operatörü diyebiliriz. Kod yazarken en sık yaptığımız şeylerden bir tanesi bir değerin null olup olmadığınız kontrol etmektir. Aşağıdaki örneğe bakacak olursak:
String str1 = null;
String str2 = "ABC";
String str3;
if (str1 != null)
str3 = str1;
else
str3 = str2;
Kodumuz çok basit bir şekilde str1 değişkeninin null olup olmadığına bakarak str3 değişkenine atama işlemleri yapmaktadır. Bunu koşul operatörünü kullanarak aşağıdaki gibi de yapabiliriz.
String str1 = null;
String str2 = "ABC";
String str3;
str3 = (str1 != null) ? str1 : str2;
Aynı ifadeyi null karşılaştırma operatörünü kullanarak daha da sade bir hale getirmemiz mümkün. Aşağıdaki koda bakalım:
String str1 = null;
String str2 = "ABC";
String str3;
str3 = str1 ?? str2;
Yukarıdaki kod str1'in null olup olmadığını kontrol etmektedir. str1 null değilse str3 değişkenine aktarılmaktadır. str1 null ise de bu sefer str2 str3 değişkenine aktarılmaktadır.