﻿
{"id":4069,"date":"2016-04-19T13:58:05","date_gmt":"2016-04-19T13:58:05","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=4069"},"modified":"2016-04-19T13:58:05","modified_gmt":"2016-04-19T13:58:05","slug":"c-null-conditional-operators","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-null-conditional-operators\/","title":{"rendered":"C# 6.0 Null Conditional Operators (?.)"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>C# 6.0&#8217;da gelen ve null kontrol algoritmas\u0131n\u0131 \u00e7ok k\u0131sa bir \u015fekilde yazmam\u0131za olanak sa\u011flayan, tek ba\u015f\u0131na \u00e7ok anlaml\u0131 durmamas\u0131na ra\u011fmen, i\u00e7 i\u00e7e ge\u00e7mi\u015f nesneleri yahut propertyleri \u00e7a\u011f\u0131r\u0131rken s\u00fcrekli null kontrol\u00fc yapmaktan kurtaran \u015fahane yeniliklerden biri olan Null Conditional Operators (?.)&#8217;\u00fcnden bahsedece\u011fim.<\/p>\n<p>Operat\u00f6r\u00fcm\u00fcz\u00fcn kullan\u0131m prototipini incelersek e\u011fer;<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #800080;\"><em><strong>var x = {Eleman1}<span style=\"color: #ff6600;\">?.<\/span>{Eleman2}<span style=\"color: #ff6600;\">?.<\/span>{Eleman3}&#8230;<\/strong><\/em><\/span><\/p>\n<p>Bu gramerde, {Eleman1} null ise x de\u011fi\u015fkenine null de\u011ferini atayacakt\u0131r. Yok e\u011fer null de\u011fil ise {Eleman2} \u00e7a\u011fr\u0131lacakt\u0131r ve ayn\u0131 mant\u0131kla kontrol edilecektir. E\u011fer {Eleman2} null ise x de\u011fi\u015fkenine null de\u011feri atanacak yok de\u011fil ise {Eleman3} \u00e7a\u011fr\u0131lacakt\u0131r. Gramerde ne kadar kombinasyon varsa bu mant\u0131kta devam edecektir.<\/p>\n<p>\u00d6rnek olarak bildi\u011fimiz kontrol yap\u0131lar\u0131yla d\u00fczenlemi\u015f olan a\u015fa\u011f\u0131daki null durum kontrol\u00fcn\u00fc ele alal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            NorthwindEntities Veri = new NorthwindEntities();\r\n            var Personel = Veri.Personeller.FirstOrDefault(p =&amp;gt; p.PersonelID == 250);\r\n            if (Personel != null)\r\n            {\r\n                Console.WriteLine(Personel.Adi);\r\n            }\r\n            Console.Read();\r\n        }\r\n<\/pre>\n<p>\u015eimdide bu kontrol\u00fc (?.) operat\u00f6r\u00fc ile ger\u00e7ekle\u015ftirelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            NorthwindEntities Veri = new NorthwindEntities();\r\n            var Personel = Veri.Personeller.FirstOrDefault(p =&gt; p.PersonelID == 250)?.Adi;\r\n            Console.WriteLine(Personel);\r\n            Console.Read();\r\n        }\r\n<\/pre>\n<p>Bu iki gramer ayn\u0131 algoritmik a\u00e7\u0131yla seyretmektedir.<\/p>\n<p>\u015eimdi olay\u0131 daha geni\u015f bir perspektiften ele alal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            NorthwindEntities Veri = new NorthwindEntities();\r\n            var Personel = Veri.Personeller.FirstOrDefault(p =&gt; p.PersonelID == 7);\r\n            if (Personel != null)\r\n            {\r\n                var Satis = Personel.Satislar.First();\r\n                if (Satis != null)\r\n                {\r\n                    var Musteri = Satis.Musteriler;\r\n                    if (Musteri != null)\r\n                    {\r\n                        Console.WriteLine(Musteri.MusteriAdi);\r\n                    }\r\n                }\r\n            }\r\n            Console.Read();\r\n        }\r\n<\/pre>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz i\u00e7 i\u00e7e null kontroll\u00fc algoritmay\u0131 a\u015fa\u011f\u0131daki gibi ?. operat\u00f6r\u00fcyle ger\u00e7ekle\u015ftirelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            NorthwindEntities Veri = new NorthwindEntities();\r\n            var MusteriAdi = Veri.Personeller.FirstOrDefault(p =&gt; p.PersonelID == 7)?.Satislar.First()?.Musteriler?.MusteriAdi;\r\n            Console.WriteLine(MusteriAdi);\r\n            Console.Read();\r\n        }\r\n<\/pre>\n<p>\u015eimdi aradaki fark\u0131 anlam\u0131\u015fs\u0131n\u0131zd\u0131r diye d\u00fc\u015f\u00fcn\u00fcyorum.<\/p>\n<p>Olduk\u00e7a esneklik ve zengin de\u011fere sahip olan bir yenilik. Kodlar\u0131 minimize ederek okunabilirli\u011fi \u00f6nemseyen bir yakla\u015f\u0131m sergileyen operat\u00f6r. G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi uzun bir algoritmay\u0131 tek sat\u0131rda ifade edebilmemizi sa\u011flamaktad\u0131r.<\/p>\n<p>\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>C# 6.0&#8217;da gelen ve null kontrol algoritmas\u0131n\u0131 \u00e7ok k\u0131sa bir \u015fekilde yazmam\u0131za olanak sa\u011flayan, tek ba\u015f\u0131na \u00e7ok anlaml\u0131 durmamas\u0131na ra\u011fmen, i\u00e7 i\u00e7e ge\u00e7mi\u015f nesneleri yahut propertyleri \u00e7a\u011f\u0131r\u0131rken s\u00fcrekli null kontrol\u00fc yapmaktan kurtaran \u015fahane yeniliklerden&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,338,720],"tags":[897,724,725,1095,1094,896,1093,1092],"class_list":["post-4069","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","category-c-5-0","category-c-6-0","tag-operatoru","tag-c-6-0","tag-c-6-0-expression-bodied-functions","tag-c-6-0-operator","tag-c-operator","tag-null","tag-null-conditional","tag-null-conditional-operators"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/4069","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=4069"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/4069\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3223"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=4069"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=4069"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=4069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}