﻿
{"id":3133,"date":"2015-07-26T13:34:23","date_gmt":"2015-07-26T13:34:23","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=3133"},"modified":"2015-07-26T14:22:56","modified_gmt":"2015-07-26T14:22:56","slug":"c-6-0-auto-property-initializers","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-6-0-auto-property-initializers\/","title":{"rendered":"C# 6.0 &#8211; Auto Property Initializers"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Yaz\u0131l\u0131m d\u00fcnyas\u0131nda diller g\u00fcn ge\u00e7tik\u00e7e kendini yenilemekte ve bu \u015fekilde var olan diller g\u00fcncelliklerini koruman\u0131n yan\u0131nda neredeyse be\u015feri hayatta da kullan\u0131labilecek seviyeye ad\u0131m ad\u0131m yakla\u015ft\u0131\u011f\u0131 g\u00f6r\u00fclmektedir.Hal b\u00f6yleyken biz yaz\u0131l\u0131mc\u0131lar bu dilin yeni yap\u0131lar\u0131n\u0131 takip ederek art\u0131k yeni teknikler ve teknolojiler \u00f6\u011frenmekten ziyade var olan gramerin daha sosyal versiyonuna hakim olma \u00e7abas\u0131na giri\u015fmekteyiz.Bu en az\u0131ndan benim i\u00e7in \u015fahsen b\u00f6yle bir d\u00fc\u015f\u00fcncedir.Bu yaz\u0131m\u0131zda C# 6.0 ile gelen <strong>Auto Property Initializers<\/strong> \u00f6zelli\u011fine de\u011finece\u011fiz.Bu yaz\u0131m\u0131zdan da anla\u015f\u0131laca\u011f\u0131 gibi ilerideki yaz\u0131lar\u0131m\u0131zda g\u00f6sterece\u011fimiz tekniklerle zamanla OOP(Object Oriented Programming) diline orta seviyede hakim bir ki\u015finin bildi\u011fi yap\u0131lar\u0131 bile temel seviyede bilgi haznesine sahip ki\u015filerin rahat\u00e7a anlay\u0131p alg\u0131layabileceklerini ve dilin ne kadar esnek ve okunakl\u0131 bir yap\u0131ya b\u00fcr\u00fcnd\u00fc\u011f\u00fcn\u00fc g\u00f6r\u00fcyor ve tekniklerle de biz yaz\u0131l\u0131mc\u0131lar\u0131n i\u015flerinin ne kadar profesyonel ve standart bir yap\u0131ya b\u00fcr\u00fcnd\u00fc\u011f\u00fcn\u00fc g\u00f6zlemliyoruz.<\/p>\n<h3><span style=\"color: #808000;\"><strong>Auto Property Initializers \u00d6zelli\u011fi Nedir?<\/strong><\/span><\/h3>\n<p>S\u0131n\u0131f i\u00e7erisinde kulland\u0131\u011f\u0131m\u0131z Property de\u011fi\u015fken yap\u0131lar\u0131na ilk de\u011feri verme \u00f6zelli\u011fidir.Bu ifadenin nas\u0131l kullan\u0131ld\u0131\u011f\u0131na birazdan de\u011finece\u011fiz lakin bu kullan\u0131m\u0131n teorik yan\u0131 olu\u015fturulan Property&#8217;nin tan\u0131m\u0131 ve bu Property&#8217;e arka plan alanlar\u0131(<em><strong>Backing Field<\/strong><\/em>) dedi\u011fimiz ilk de\u011ferin verilmesini sa\u011flamaktad\u0131r.<\/p>\n<h3><span style=\"color: #808000;\">\u00d6rneklendirelim<\/span><\/h3>\n<p>Visual Studio ile bir proje olu\u015ftural\u0131m.Lakin C# 6.0 ile gelen yenilikleri kullanabilmek i\u00e7in olu\u015fturaca\u011f\u0131n\u0131z projenin Framework&#8217;\u00fcn\u00fcn en az 4.6 olmas\u0131na dikkat ediniz.<\/p>\n<p>Projemizde &#8220;InsanEntity.cs&#8221; isimli bir s\u0131n\u0131f olu\u015ftural\u0131m ve bu s\u0131n\u0131fa &#8220;Adi&#8221;, &#8220;Soyadi&#8221; ve &#8220;Yasi&#8221; isimli iki adet property ekleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class InsanEntity\r\n    {\r\n        public string Adi { get; set; }\r\n        public string Soyadi { get; set; }\r\n        public int Yasi { get; set; }\r\n    }\r\n<\/pre>\n<p>Bu \u015fekilde kullan\u0131m propertylerin en temel ifadelerinden birisidir.\u015eimdi Auto Property Initializers \u00f6zelli\u011fi ile bu propertylerimize ilk de\u011ferlerini verelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class InsanEntity\r\n    {\r\n        public string Adi { get; set; } = &quot;Gen\u00e7ay&quot;;\r\n        public string Soyadi { get; set; } = &quot;Y\u0131ld\u0131z&quot;;\r\n        public int Yasi { get; set; } = 23;\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi propertyler tan\u0131mland\u0131klar\u0131 esnada ilk de\u011ferlerini Auto Property Initializers \u00f6zelli\u011fi ile bu \u015fekilde verebiliyoruz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            InsanEntity Insan = new InsanEntity();\r\n            Console.Write(&quot;Ad\u0131 : &quot; + Insan.Adi + &quot;\\nSoyad\u0131 : &quot; + Insan.Soyadi + &quot;\\nYa\u015f\u0131 : &quot; + Insan.Yasi );\r\n            Console.Read();\r\n        }\r\n<\/pre>\n<p>Projemizin en son \u00e7al\u0131\u015ft\u0131rl\u0131p derlenmi\u015f halinin ekran g\u00f6r\u00fcnt\u00fcs\u00fc a\u015fa\u011f\u0131daki gibidir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/07\/C-6.0-Auto-Property-Initializers.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/07\/C-6.0-Auto-Property-Initializers.png\" alt=\"C# 6.0 - Auto Property Initializers\" width=\"154\" height=\"118\" class=\"aligncenter size-full wp-image-3134\" \/><\/a><\/p>\n<p><strong>Peki, property read only(yaln\u0131z okunabilir) ise bu \u00f6zelli\u011fi kullanabilir miyiz?<\/strong><br \/>\nHemen deneyelim&#8230;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class InsanEntity\r\n    {\r\n        public string Adi { get; set; } = &quot;Gen\u00e7ay&quot;;\r\n        public string Soyadi { get; set; } = &quot;Y\u0131ld\u0131z&quot;;\r\n        public int Yasi { get; set; } = 23;\r\n\r\n        public string Cinsiyeti { get; } = &quot;Erkek&quot;;\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi &#8220;InsanEntity.cs&#8221; isimli s\u0131n\u0131f\u0131m\u0131za &#8220;Cinsiyeti&#8221; isimli bir read only property ekledik ve Auto Property Initializers \u00f6zelli\u011fi ile bu propretye de\u011ferini verdik.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            InsanEntity Insan = new InsanEntity();\r\n            Console.Write(&quot;Ad\u0131 : &quot; + Insan.Adi + &quot;\\nSoyad\u0131 : &quot; + Insan.Soyadi + &quot;\\nYa\u015f\u0131 : &quot; + Insan.Yasi + &quot;\\nCinsiyeti : &quot; + Insan.Cinsiyeti);\r\n            Console.Read();\r\n        }\r\n<\/pre>\n<p>Bakal\u0131m projeyi derlerken hata alacak m\u0131y\u0131z?<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/07\/C-6.0-Auto-Property-Initializers-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2015\/07\/C-6.0-Auto-Property-Initializers-2.png\" alt=\"C# 6.0 - Auto Property Initializers - 2\" width=\"162\" height=\"110\" class=\"aligncenter size-full wp-image-3136\" \/><\/a><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi read onyl olan propertylere bile ilk de\u011ferlerini bu \u00f6zellik sayesinde atayabiliyoruz.<\/p>\n<p>Ek olarak \u015funu belirtmek isterim ki, Auto Property Initializers \u00f6zelli\u011fini kullan\u0131rken, ilgili s\u0131n\u0131f\u0131n Constructor metodu i\u00e7erisinde propertylere verdi\u011fimiz de\u011ferleri atamaktad\u0131r.Tabi bu i\u015flem arka planda ger\u00e7ekle\u015fmekte ve performans a\u00e7\u0131s\u0131ndan olduk\u00e7a fayda g\u00f6stermektedir.<\/p>\n<p>Bol bol faydalanman\u0131z dile\u011fiyle&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar dilerim&#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>Yaz\u0131l\u0131m d\u00fcnyas\u0131nda diller g\u00fcn ge\u00e7tik\u00e7e kendini yenilemekte ve bu \u015fekilde var olan diller g\u00fcncelliklerini koruman\u0131n yan\u0131nda neredeyse be\u015feri hayatta da kullan\u0131labilecek seviyeye ad\u0131m ad\u0131m yakla\u015ft\u0131\u011f\u0131 g\u00f6r\u00fclmektedir.Hal b\u00f6yleyken biz yaz\u0131l\u0131mc\u0131lar bu dilin yeni yap\u0131lar\u0131n\u0131 takip&#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":3014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,720],"tags":[722,719,718,724,723,70,721],"class_list":["post-3133","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","category-c-6-0","tag-auto-property","tag-auto-property-initializers","tag-backing-field","tag-c-6-0","tag-initializers","tag-property","tag-read-only"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3133","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=3133"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3133\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3014"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=3133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=3133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=3133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}