{"id":270,"date":"2011-07-04T07:49:00","date_gmt":"1970-01-01T00:00:00","guid":{"rendered":"http:\/\/www.yazilimmutfagi.com\/?p=270"},"modified":"2011-07-04T07:49:00","modified_gmt":"1970-01-01T00:00:00","slug":"csharp-nullable-types","status":"publish","type":"post","link":"https:\/\/www.yazilimmutfagi.com\/index.php\/2011\/07\/04\/csharp-nullable-types\/","title":{"rendered":"C# Nullable Types"},"content":{"rendered":"<p>Iyi geceler arkadaslar yeni gelen projenin Css&#8217; ini yaziyordum vakit hayli ge&ccedil; oldugu i&ccedil;in yatmaya<br \/>\nkarar verdim tam bu esnada kafama dank diye uzun zamandir makale yazmadigim aklima geldi tabi buna<br \/>\nmakale denilirse \ud83d\ude42 neyse bir c# 2.0 yeniligi olan nullable typeslardan bahsetmek istiyorum..<br \/>\nVeritabani islemlerinde &ccedil;ogu zaman sikinti yaratan, deger tipleri (int, bool, ..) i&ccedil;in &quot;null&quot; deger g&ouml;nderememe hikayesini &ccedil;&ouml;zen bir yenilik. artik bir deger tipi (value type), hi&ccedil; bir deger atanmamis (undefined) bir durumda kalabiliyor. eskiden bir ilkel tipimizin illa bir degeri olmasi gerekiyordu. vermeseniz de &ouml;n tanimli degerini aliyordu.<br \/>\n<a href='www.yazilimmutfagi.com'>.<\/a><br \/>\nnullable : varsayilan olarak value type degiskenleri null gecemezsiniz. aldiginiz hatada bu acikca belirtilir. <br \/>\nancak yapilan bazi islemlerde deger yakalama sirasinda gelen deger eger null ise projelerimiz patlayabilir. bunu engellemek null gelen deger varsa yerine varsayilan bir degisken atayabilmek i&ccedil;in bu tip kullanilir..<br \/>\n<br \/>\n&quot;nullable&quot; bir tipi s&ouml;yle tanimliyoruz:<\/p>\n<p><br \/>\nstring kelime = null;<br \/>\nint sayim = null;<br \/>\nint? sayim = null;<br \/>\n<br \/>\n<br \/>\nBir nullable type degiskeninin deger i&ccedil;erip i&ccedil;ermedigini s&ouml;yle anlayabiliriz:<br \/>\nif (x.hasvalue)&quot; veya &quot;if (x!=null)&quot; denilerek deger i&ccedil;erip i&ccedil;ermedigi denetlenebilir.<br \/>\n<br \/>\nDipnot taklitlerden sakininiz:<br \/>\n<br \/>\nint? a = null;<br \/>\nobject b = a;<br \/>\nreturn b==null;<br \/>\n<br \/>\nsatirlarindan true degerini dondurecek reference type taklidi yapabilen strong valued tiptir.<br \/>\n<br \/>\nS&ouml;yle bir kullanimda var..<br \/>\n<br \/>\nint? a = null;<br \/>\nint defaultval = 10;<br \/>\nconsole.writeline(&quot;anin degeri: &quot; + (a ?? defaultval));<br \/>\ndiyelimki &quot;a&quot; degiskenine veritabanindan deger gelmedi.. &quot;a&quot; haliyle null kaldi<br \/>\nbunun yerine a ?? yani harbiden null ise defautval degiskeninin degerini g&ouml;ster demek oluyor..<br \/>\nbir nevi bir patlama ger&ccedil;eklesmemesi i&ccedil;in kod sigortasi..<br \/>\n<br \/>\ntabi bunu s&ouml;ylede yapabilirdik..<br \/>\n<a href='www.yazilimmutfagi.com'>.<\/a><br \/>\ngetvalueordefault() methodu degiskenin uzerinde deger varsa onu al yoksa varsayilan atamam yap..<br \/>\nint ugurlusayi = gelenID.GetValueOrDefault(5);<br \/>\n<br \/>\nBuda generic hali:<br \/>\nNullable&lt;int&gt; gelenID = new Nullable&lt;int&gt;();<br \/>\n<br \/>\nAyrica DBNull.Value diye birsey vardirki bu parametre ile db den gelen nesnenin null olup olmadigini<br \/>\nkontrol etme amaci ile kullanilir.<br \/>\nif(DBNull.Value!= datarow[&quot;alanadi&quot;])<br \/>\ngibisinden..<br \/>\n<br \/>\nBu saatte benden bu kadar iyi geceler tekrardan..<br \/>\n<br \/>\nHakki ESER<\/p>","protected":false},"excerpt":{"rendered":"<p>Veritabani islemlerinde &#231;ogu zaman sikinti yaratan, deger tipleri (int, bool, ..) i&#231;in &quot;null&quot; deger g&#246;nderememe hikayesini &#231;&#246;zen bir yenilik.<\/p>\n","protected":false},"author":545,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[417],"tags":[4163,4908,5337,4610,5342,5545],"_links":{"self":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/270"}],"collection":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/users\/545"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/comments?post=270"}],"version-history":[{"count":0,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/270\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/media?parent=270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/categories?post=270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/tags?post=270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}