﻿
{"id":3144,"date":"2015-07-27T16:57:42","date_gmt":"2015-07-27T16:57:42","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=3144"},"modified":"2015-07-27T16:58:44","modified_gmt":"2015-07-27T16:58:44","slug":"c-6-0-expression-bodied-functions","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-6-0-expression-bodied-functions\/","title":{"rendered":"C# 6.0 &#8211; Expression Bodied Functions"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>\u015eahsen ben yaz\u0131l\u0131m\u0131n <a href=\"http:\/\/www.gencayyildiz.com\/blog\/arsiv-2\/\" target=\"_blank\">Lambda ifadelerini<\/a> severim.Dile g\u00f6rsel a\u00e7\u0131dan bir d\u00fczen, dilsel a\u00e7\u0131dan ayr\u0131 bir kafiye katmaktad\u0131rlar.Ayriyetten teknik olarakta Lamda ifadeleri fonksiyonel bir yap\u0131 sergilediklerinden dolay\u0131da olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r.C# 6.0 ile s\u0131n\u0131f yap\u0131lar\u0131n\u0131n elemanlar\u0131na Lambda ifadelerinin kullan\u0131m kolayl\u0131\u011f\u0131 sa\u011flanm\u0131\u015ft\u0131r.Bu beni \u00e7ok sevindirdi.Bu yaz\u0131m\u0131zda s\u0131n\u0131f elemanlar\u0131ndan olan metod ve property yap\u0131lar\u0131n\u0131n Lambda ifadeleriyle nas\u0131l olu\u015fturabilece\u011fimizi inceleyece\u011fiz.<\/p>\n<p>\u00d6ncelikle a\u015fa\u011f\u0131daki kod blo\u011funu inceleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public void IsimYaz()\r\n        {\r\n            Console.Write(&quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;);\r\n        }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi bu tarz basit bir i\u015fleve sahip metodu olu\u015fturabilmek i\u00e7in metodun imzas\u0131yla beraber g\u00f6vdesi olduk\u00e7a uzun bir yap\u0131 sergilemektedir.Halbuki i\u015flev olarak \u00e7ok \u00e7ook basit olan bu metodu C# 6.0 ile a\u015fa\u011f\u0131daki gibide olu\u015fturmam\u0131z m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n   public void IsimYaz() =&gt; Console.Write(&quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;);\r\n<\/pre>\n<p>Dikkat ederseniz e\u011fer Lambda yap\u0131s\u0131ndan olan <em><span style=\"color: #008000;\"><strong>=&gt;<\/strong><\/span><\/em> ifadesini kullanarak metodumuzu olu\u015fturmu\u015f olduk.Bu ifade sayesinde metodumuzun s\u0131n\u0131r\u0131 scope(s\u00fcsl\u00fc parantez)larla kod fazlal\u0131\u011f\u0131 sa\u011flayarak belirlenmek zorunda kalm\u0131yor.<\/p>\n<p><strong>Peki geri d\u00f6n\u00fc\u015f de\u011ferine sahip bir metodu nas\u0131l Lambda ifadesiyle olu\u015fturabiliriz?<\/strong> sorusunu sorabilirsiniz.<br \/>\nA\u015fa\u011f\u0131daki kod blo\u011funu inceleyin&#8230;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n--- Normal Yaz\u0131m ---\r\n        public string IsimGonder()\r\n        {\r\n            return &quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;;\r\n        }\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public string IsimGonder() =&gt; &quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;;\r\n<\/pre>\n<p>veyahut int bir de\u011fer g\u00f6nderen metodsa;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public int YasiGonder() =&gt; 23;\r\n<\/pre>\n<p>\u0130\u015fte g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi&#8230;<br \/>\nMetodumuz geriye de\u011fer g\u00f6nderecekse e\u011fer => ifadesinden sonra o de\u011fere ait bir veri girmeniz yeterli olacakt\u0131r.<\/p>\n<p>\u015eimdi biraz C# bilgilerimizi sorgulayal\u0131m.S\u0131n\u0131f elemanlar\u0131ndan bir di\u011feri olan Property yap\u0131lar\u0131n\u0131n \u00f6zelliklerini hat\u0131rlarsak e\u011fer, derleme zaman\u0131nda arka planda fonksiyonlara d\u00f6n\u00fc\u015ft\u00fcr\u00fclen bir yap\u0131ya sahiptiler.Acaba fonksiyonlar i\u00e7in getirilen bu yenilik arka planda fonksiyolist bir yap\u0131 g\u00f6steren Propertyler i\u00e7in de uygun mu?<\/p>\n<p>Tabi yaz\u0131n\u0131n giri\u015finde metodlar ve propertyler i\u00e7in bu yap\u0131y\u0131 kullanaca\u011f\u0131m\u0131zdan bahsetti\u011fim i\u00e7in buradaki yaratmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131m gerilimli havan\u0131n fos oldu\u011funun bende fark\u0131nday\u0131m.Neyse \ud83d\ude42 yola devam edelim..<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public string Cinsiyet { get; }\r\n<\/pre>\n<p>veya<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public string Cinsiyet\r\n        {\r\n            get\r\n            {\r\n                return &quot;Erkek&quot;;\r\n            }\r\n        }\r\n<\/pre>\n<p>\u015feklinde tan\u0131mlayabilece\u011fimiz propertylerimizi a\u015fa\u011f\u0131daki gibi Lambda ifadesiyle tan\u0131mlayabilir ve ilk de\u011feri verebiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n       public string Cinsiyet =&gt; &quot;Erkek&quot;;\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi Lambda ifadesiyle tan\u0131mlanan property bu \u015fekilde olmaktad\u0131r.Lakin dikkat ettiniz mi?\u00d6rnekte verdi\u011fim property yap\u0131lar\u0131 sadece okunabilir(read only) \u00f6zelli\u011fine sahiptirler.Bu demek oluyor ki, Lambda ifadesini read only \u00f6zelli\u011fine sahip olmayan propertylerde kullanamay\u0131z.<\/p>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/c-6-0-auto-property-initializers\/\" target=\"_blank\">C# 6.0 \u2013 Auto Property Initializers<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131mda da property yap\u0131lar\u0131n\u0131n tan\u0131mland\u0131klar\u0131 anda ilk de\u011ferlerinin atanmas\u0131yla ilgili gelen yenilikten bahsetmi\u015ftim.Haliyle bu yaz\u0131mda da property yap\u0131lar\u0131n\u0131n kullan\u0131m\u0131na Lambda ile m\u00fcdahale ettik.O y\u00fczden iki yaz\u0131daki kodlar\u0131 bu yaz\u0131da property yap\u0131s\u0131na \u00f6zel olarak g\u00f6rsel bir \u00f6zetle yaz\u0131m\u0131z\u0131 sonland\u0131rmak isterim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public string AdiSoyadi { get; set; }\r\n        public int Yas { get; set; } = 23;\r\n        public string Cinsiyet =&gt; &quot;Erkek&quot;;\r\n<\/pre>\n<p>Sonraki yaz\u0131lar\u0131m\u0131zda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar dilerim.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u015eahsen ben yaz\u0131l\u0131m\u0131n Lambda ifadelerini severim.Dile g\u00f6rsel a\u00e7\u0131dan bir d\u00fczen, dilsel a\u00e7\u0131dan ayr\u0131 bir kafiye katmaktad\u0131rlar.Ayriyetten teknik olarakta Lamda ifadeleri fonksiyonel bir yap\u0131 sergilediklerinden dolay\u0131da olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r.C# 6.0 ile s\u0131n\u0131f yap\u0131lar\u0131n\u0131n elemanlar\u0131na Lambda ifadelerinin&#46;&#46;&#46;<\/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":[724,725,726,230,532],"class_list":["post-3144","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","category-c-6-0","tag-c-6-0","tag-c-6-0-expression-bodied-functions","tag-expression-bodied-functions","tag-lambda","tag-lambda-expression"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3144","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=3144"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/3144\/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=3144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=3144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=3144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}