﻿
{"id":5209,"date":"2016-10-19T12:24:09","date_gmt":"2016-10-19T12:24:09","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=5209"},"modified":"2016-10-19T12:24:09","modified_gmt":"2016-10-19T12:24:09","slug":"c-7-0-out-variables","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-7-0-out-variables\/","title":{"rendered":"C# 7.0 &#8211; Out Variables"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bildi\u011finiz gibi elimizdeki bir de\u011fi\u015fken ile metot i\u00e7erisinden de\u011fer \u00e7ekme i\u015flemini out keyword\u00fc sayesinde ger\u00e7ekle\u015ftiriyoruz. C# 7.0 ile bu keyword\u00fcn kullan\u0131m\u0131ndaki bir sakatl\u0131k d\u00fczeltilmeye \u00e7al\u0131\u015f\u0131lm\u0131\u015ft\u0131r. \u00c7al\u0131\u015f\u0131lm\u0131\u015ft\u0131r diyorum \u00e7\u00fcnk\u00fc yap\u0131lan g\u00fcncelleme birazdan da i\u00e7erikte g\u00f6rece\u011finiz gibi geli\u015ftirilmeyi ve release(piyasaya s\u00fcr\u00fcld\u00fc\u011f\u00fcnde) edildi\u011finde tamamlanmay\u0131 beklemektedir.<\/p>\n<p><em><strong>Peki C# 7.0 yenili\u011finden \u00f6nce olan sakatl\u0131k nas\u0131ld\u0131?<\/strong><\/em><br \/>\nHemen a\u015fa\u011f\u0131daki kod blo\u011funu inceleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            int Sayi = 0;\r\n            OrnekMetot(out Sayi);\r\n            Console.WriteLine(Sayi);\r\n\r\n            Console.Read();\r\n        }\r\n\r\n        static public void OrnekMetot(out int Sayi)\r\n        {\r\n            Sayi = 3;\r\n        }\r\n    }\r\n<\/pre>\n<p>&#8220;OrnekMetot&#8221; metodunda oldu\u011fu gibi bir de\u011fi\u015fkeni fiziksel bir \u015fekilde out parametre olarak vermemiz gerekti\u011finde ilgili de\u011fi\u015fkeni \u00f6nceden tan\u0131mlamak zorunda kal\u0131yorduk ve parametre k\u0131sm\u0131nda olu\u015fturmam\u0131za izin verilmiyordu.<\/p>\n<p>\u0130\u015fte bu durum \u00e7o\u011fu kez Dummy Code g\u00f6r\u00fcnt\u00fcs\u00fc vermekteydi. Bence yaz\u0131lan kod sat\u0131rlar\u0131ndaki estetik ve ahengi bu tarz l\u00fczumsuz s\u0131n\u0131rl\u0131l\u0131klar bozmakta ve okunabilirlikten de \u00f6te kodun g\u00f6r\u00fcn\u00fc\u015f ge\u00e7erlili\u011fini d\u00fc\u015f\u00fcrmektedir. Bundan dolay\u0131d\u0131r ki, bu tarz zahiren etkili zay\u0131fl\u0131klar\u0131 sakatl\u0131k olarak nitelendirmekteyim.<\/p>\n<p>Velhas\u0131l C# 7.0 bu duruma nas\u0131l bir yenilik getirdi inceleyelim.<\/p>\n<p><em><strong>C# 7.0 yenili\u011finden sonra Out Variables<\/strong><\/em><\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            OrnekMetot(out int Sayi);\r\n\r\n            Console.Read();\r\n        }\r\n\r\n        static public void OrnekMetot(out int Sayi)\r\n        {\r\n            Sayi = 3;\r\n        }\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi out parametrelerin de\u011ferini direkt olarak parantez i\u00e7inde olu\u015fturulan de\u011fi\u015fken sayesinde verebilmekteyiz. Ama burada \u015f\u00f6yle bir durum vard\u0131r ki, bu yenili\u011fi bir hi\u00e7 yapmaktad\u0131r.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/10\/C-7.0-Out-Variables.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5219\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/10\/C-7.0-Out-Variables.png\" alt=\"C# 7.0 - Out Variables\" width=\"356\" height=\"173\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/10\/C-7.0-Out-Variables.png 356w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/10\/C-7.0-Out-Variables-300x146.png 300w\" sizes=\"auto, (max-width: 356px) 100vw, 356px\" \/><\/a><br \/>\nDikkat ederseniz parantez i\u00e7erisinde olu\u015fturulan de\u011fi\u015fkenimize d\u0131\u015far\u0131dan ula\u015famamaktay\u0131z.<\/p>\n<p>&#8220;<em>Eee hoca, nas\u0131l ula\u015facaz?<\/em>&#8221; diye sorarsan\u0131z <span style=\"text-decoration: underline;\">ula\u015famayacaks\u0131n\u0131z<\/span>.<\/p>\n<p>Evet&#8230; \u015euanda parametre olarak direkt de\u011fi\u015fkeni olu\u015fturabiliyoruz ama o de\u011fi\u015fkene ula\u015fam\u0131yoruz. De\u011fi\u015fkene ula\u015fabilmek i\u00e7in ilgili metodun bir scope&#8217;a ba\u011flanmas\u0131 gerekmektedir. Bu a\u015fa\u011f\u0131daki gibi &#8220;bool&#8221; tipinde de\u011fer d\u00f6nd\u00fcren bir metodun if kontrol\u00fcnde kullan\u0131lmas\u0131 gibi di\u011fer kuland\u0131\u011f\u0131n\u0131z yap\u0131lar\u0131n scopelar\u0131 olabilir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/10\/C-7.0-Out-Variables-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/10\/C-7.0-Out-Variables-1.png\" alt=\"C# 7.0 - Out Variables\" width=\"474\" height=\"313\" class=\"aligncenter size-full wp-image-5224\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/10\/C-7.0-Out-Variables-1.png 474w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/10\/C-7.0-Out-Variables-1-300x198.png 300w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n<p>Bu durum Visual Studio Preview 4&#8217;\u00fcn s\u0131n\u0131rlamas\u0131d\u0131r. Out Variables, \u015fuanda kullan\u0131ld\u0131\u011f\u0131 scopelara handle(i\u015flemek) edilememektedir. Bizim beklentimiz bu yenili\u011fin tam olarak olgunla\u015fmas\u0131 ve bir an \u00f6nce bu bariz sakatl\u0131\u011f\u0131n net bir \u015fekilde son bulmas\u0131d\u0131r.<\/p>\n<p>Sonraki yaz\u0131lar ve yeniliklerde g\u00f6r\u00fc\u015fmek \u00fczere&#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>Merhaba, Bildi\u011finiz gibi elimizdeki bir de\u011fi\u015fken ile metot i\u00e7erisinden de\u011fer \u00e7ekme i\u015flemini out keyword\u00fc sayesinde ger\u00e7ekle\u015ftiriyoruz. C# 7.0 ile bu keyword\u00fcn kullan\u0131m\u0131ndaki bir sakatl\u0131k d\u00fczeltilmeye \u00e7al\u0131\u015f\u0131lm\u0131\u015ft\u0131r. \u00c7al\u0131\u015f\u0131lm\u0131\u015ft\u0131r diyorum \u00e7\u00fcnk\u00fc yap\u0131lan g\u00fcncelleme birazdan da i\u00e7erikte&#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":5118,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,1490],"tags":[27,1491,1518,1171,1525,1524,1526],"class_list":["post-5209","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","category-c-7-0","tag-c","tag-c-7-0","tag-c-7-0-yenilikleri","tag-dummy-code","tag-out","tag-out-variables","tag-variables"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5209","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=5209"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5209\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/5118"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=5209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=5209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=5209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}