C# programlama dilinde değişken tanımlarken ve kullanırken dikkat etmemiz gereken noktalardan bir tanesi de tanımladığımız değişkenin içeriğinin NULL olma durumunun kontrol edilmesidir. Özellikle veri tabanından gelen verilerin, client tarafından gelen istek içeriklerinin NULL olma olasılığı çok fazladır. Bu da kontrol edilmezse özellikle değer tipli değişkenlerle çalışırken hatalara yol açabilir. Bu sorunu çözmek için kullanılan yöntem Nullable veya T? Yapısını kullanmaktır. T yerine değer tipli değişken türlerini yazabilirsiniz. Örneğin: Nullable veya int? , Nullable veya long? Nullable ile birlikte kullanabileceğiniz değişken türlerine "int", "long", "float", "double", "decimal", "char", "bool", "byte", "short", "struct", "enum", “DateTime” örnek verilebilir. Değişken tanımlarken örneğin int türüne NULL değeri atarsanız kullandığınız IDE size hata verecektir. Bu sorunun sözümü de değişkeni Nullable türünde tanımlamaktır. Integer bir değişken için int? _degisken = null şeklinde bir yazılımı tercih edebilirsiniz. Bu yapı referans tipleri dışında bütün değişken tanımlamaları için kullanılabilir. Referans değişkenleri doğal olarak NULL değerini desteklediği için, zaten bu yapıyı kullanmaya gerek te yok… Özetle Nullable nedir diye soracak olursanız, bu yapı değer tipli değişkenleriniz NULL değerine sahip olduğunda size bir kontrol mekanizması sunar. Bu kontrol mekanizmasından bir tanesi de HashValue’dir. Bu özellik değişkeninin o andaki değerinin NULL olup olmamasını bool değer olarak geri döndürür. İsterseniz bu konuyu bir örnek üzerinden inceleyelim:
int? degisken = null;
if (degisken.HasValue)
{
System.Console.WriteLine("Değişken = " + degisken.Value);
}
else
{
System.Console.WriteLine("Değişken = Null");
}
Örneğin HashValue yapısını anlatabildiğini düşünüyorum. Biraz da açıklayacak olursak degisken.HasValue bize bool bir değer döndürür. Bu değişkenimiz içiriği NULL mı? Değil mi? Sorusunun da yanıtı. Özetle HashValue özelliği bir değişkenin null olup olmadığını bize söyler. Bu yapı aynı zamanda tüm nesne türleri, değişken türleri ile birlikte kullanılabilir.
Eğer içeriği Null olan degisken değerini, int ikinciDegisken = dekisken. Value veya atamaya çalışırsanız System.InvalidOperationException hatası alacaksınız. Bunun çözümü ise,
int ikinciDegisken = dekisken.GetValueOrDefault();
şeklinde kullanımı tercih etmenizdir.
int? degisken = null;
if (degisken.HasValue)
{
System.Console.WriteLine("Değişken = " + degisken.Value);
}
else
{
System.Console.WriteLine("Değişken = Null");
}
Örneğin HashValue yapısını anlatabildiğini düşünüyorum. Biraz da açıklayacak olursak degisken.HasValue bize bool bir değer döndürür. Bu değişkenimiz içiriği NULL mı? Değil mi? Sorusunun da yanıtı. Özetle HashValue özelliği bir değişkenin null olup olmadığını bize söyler. Bu yapı aynı zamanda tüm nesne türleri, değişken türleri ile birlikte kullanılabilir.
Eğer içeriği Null olan degisken değerini, int ikinciDegisken = dekisken. Value veya atamaya çalışırsanız System.InvalidOperationException hatası alacaksınız. Bunun çözümü ise,
int ikinciDegisken = dekisken.GetValueOrDefault();
şeklinde kullanımı tercih etmenizdir.
Yorumlar
Yorum Gönder