C#’da Nullable Tipi ve ?? Operatörü

Programlamada manuel olarak “null” değerini kullandığımız alanlardan ziyade, dinamik olarak değişkenlik gösterebilen ve ne zaman nerede karşımıza çıkabileceğini bilemeyeceğimiz durumlarda “null” değeri oldukça problem yaratabiliyor. Genellikle veritabanından elde ettiğimiz veriler içerisinde işlemlerimizi gerçekleştirirken “null” değerinin bizleri perişan ettiği durumları çok görmüşüzdür. Haliyle C# ve diğer programlama dilleri “null” değerine özel kontrol sınıfları veyahut mekanizmaları oluşturmaktadırlar. Bu yazımızda sizlere “null” değerini kontrol amaçlı inşa edilmiş Generic Nullable sınıfı ile ?? operatörünü tanıtacağım.

Nullable Sınıfı

Generic olarak tanımlanmış bir sınıftır. Elde edilen verinin “null” olma durumuna göre kontrol yapmamızı sağlar.

        static void Islem(Nullable<int> Sayi) {
            if (!Sayi.HasValue)
            {
                Console.WriteLine("Sayı girilmemiştir.");
            }
            else
            {
                Console.WriteLine("Girilen sayı : " + Sayi.Value);
            }
        }

HasValue özelliği sayesinde değer var mı? yok mu? kontrol edilmektedir.
Value özelliği sayesinde de, eğer değer varsa o değeri elde edebilmekteyiz.

?? Operatörü

Bu operatör ile kısa ve net bir gramerle null değerleri kontrol edebiliyor ve müdahale edebiliyoruz. Şimdi aşağıdaki kod bloğunu inceleyiniz.

        static void Islem(int? Sayi)
        {
            Sayi = Sayi ?? -1;
            Console.WriteLine(Sayi.Value);
        }

Gördüğünüz gibi Sayi parametresine null değer girilirse ?? operatörü ile kontrol edilmektedir. Okunuşu şöyledir. Eğer Sayı değeri null ise -1 değerini ata. İşlemimiz bu kadar kolay…

Tabi genellikle Asp.NET MVC mimarisinde kullandığımız bu operatörü birde o mimaride inceleyelim.

        public ContentResult Topla(int? Sayi1, int? Sayi2)
        {
            Sayi1 = Sayi1 ?? 0;
            Sayi2 = Sayi2 ?? 0;
            return Content((Sayi1 + Sayi2).ToString());
        }

Hepinize kolay gelsin…
İyi çalışmalar dilerim…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Copy Protected by Chetan's WP-Copyprotect.