C#, Faydalı bi kaç Oparatör/Method

? Operatoru
System.Nullable adındaki bir struct ile value typelarınıza null değerler kazandırabiliyorsunuz. Generic bir yapıya sahip olduğundan herhangi bir value type bu struct ile kullanılabiliyor.

System.Nullable i = null;
System.Nullable b = null;

Ancak her defasında bu structı uzun uzun belirtmeye de gerek yok. C# geliştiricileri bu sorunu gidermek için küçük bir syntactic sugar eklemiş. ? operatorunu herhangi bir value type veri tipinden sonra yazarak bu ihtiyacı gidermiş oluyorsunuz.

int? i = null;
bool? b = null;

System.Nullable, görüldüğü gibi veri tiplerine null değerler atanmasını sağlıyor. Bunun yanında null verilerle çalışabilmek için kendiside birkaç özel property ve method da sunuyor. Değişkenlerinizi bu struct yardımı ile oluşturduğunuzda veri tipleriniz HasValue ve Value adında 2 yararlı propertye sahip oluyor. Bu propertylerden HasValue, değişkenin değerinin aslında Null olup olmadığını test ediyor. Eğer değişken içerisi null ise False, değilse True dönüyor. Eğer burdan gelen sonuç True ise yani değişken null değer taşımıyor ise Value propertysi değişkenin içerisindeki değeri dönüyor.

int? i = 5;
int? a = null;
if (i.HasValue) // aslında i != null aynı şey
{
    int t = i.Value;
    Console.WriteLine("Değer null değil" + " " + i.Value);
    Console.WriteLine("t : " + t);
}
else Console.WriteLine("Değer null");

C# ?? Operatoru
Bu operatör ile basit bir şekilde casting bile yapmadan nullable tipin null olması durumunda default bir değer verebiliyoruz.

int? a = null;
int? b = 5;
int c = a ?? 0; // a null olduğunda c ye atanan değer 0 olacaktır.
int d = a ?? b ?? 0; // eğer a null ise b değerini ata. b de null ise 0 ata.
int? e = null;
int? f = a ?? e ?? d; // Çıktı 0

GetValueOrDefault Methodu
Bu konuyla ilgili bahsetmem gereken son nokta ise nullable tiplerin GetValueOrDefault methodu olacaktır. Bu method ile herhangi bir nullable tipin değerini güvenli bir şekilde alabiliyoruz. Yine nullable tipin değerinin null olması durumunda bu tipin üretildiği gerçek value typeın default değerini bu method ile doğrudan alabiliyoruz. Ayrıca 1 adet overloaded methodu ile değerin null olması durumunda methodun dönecek default değeride kendimiz belirleyebiliyoruz.

int? a = null;
int b = a.GetValueOrDefault(); // b = 0
Console.WriteLine(b);
b = a.GetValueOrDefault(5);
Console.WriteLine(b); // b = 5
bool? c = null;
bool d = c.GetValueOrDefault(); //d = false
d = c.GetValueOrDefault(true); // d = true

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s