Bunu biliyor muydunuz: C# Null Coalesce Operator ya da ?? operatörü

.NETİpucu comments

Geçenlerde bir videoda ?? şeklinde bir C# operatörünün kullanımına şahit oldum. Başta .NET 3.5 ile gelen yeni özelliklerden biri gibi gelse de bu operatör aslında .NET 2.0′dan beri varmış da haberimiz yokmuş. Videodaki kodun gelişinden operatörün ne amaçla kullanıldığı açıktı; operatörün solunda bulunan operandın (operandın Türkçe’si işlenenmiş bu arada) değeri null değilse işlem sonucu bu (soldaki) operand, null ise de sağdaki operand dönüyor. Şu şekilde:

string a = null;
string b = "foo";
string c = a ?? b;

kodu çalıştırıldığında c değişkeni a null değerine sahip olduğu için b’nin değeri olan “foo” değerine sahip oluyor. İşimizi bir çok sefer kolaylaştıran diğer bir operatör ?: Ternary operatöründen bile daha okunabilir bir kod sağlıyor. Ternary ile bunu şu şekilde yazabilirdik:

string a = null;
string b = "foo";
string c = a != null ? a : b;

Hele bir de if kullansaydık bu işlem için bu kadar daha kod yazmamız gerekecekti:

string a = null;
string b = "foo";
 
if (a != null)
    c = a;
else
    c = b;

Operatörü iç içe geçmiş bir şekilde kullanırsak bir kaç değişken arasından ilk null olmayanını bulabiliriz:

string a = null;
string b = null;
string c = "foo";
string d = a ?? b ?? c; // d = "foo"

Operatörün MSDN sayfasına şuradan ulaşabilirsiniz.

Bu operatör aslında JavaScript yazarken kullandığımız **   ** operatörü ile aynı işi yapıyor; ilk operand null değilse onu null ise sonrakini döndür.
var foo = "bar";
var baz = null;
alert(foo || baz);

Comments