﻿
{"id":7144,"date":"2018-03-19T14:48:40","date_gmt":"2018-03-19T14:48:40","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=7144"},"modified":"2018-03-19T14:50:51","modified_gmt":"2018-03-19T14:50:51","slug":"c-7-2-in-parameters","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-7-2-in-parameters\/","title":{"rendered":"C# 7.2 &#8211; In Parameters"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>C#&#8217;ta metotlara g\u00f6nderilen parametreler \u00fczerinde farkl\u0131 i\u015flevsellikler g\u00f6steren &#8220;ref&#8221; ve &#8220;out&#8221; keywordleri mevcuttur. C# 7.2 versiyonu ile bu keywordlerin yan\u0131na &#8220;In&#8221; komutuda eklenmi\u015ftir. Gelin bu yeni gelen komutu \u00f6nceki var olanlarla mukayese ederek inceleyelim.<\/p>\n<h3>ref Komutu<\/h3>\n<p>Metoda g\u00f6nderilecek de\u011fi\u015fkenin referans\u0131n\u0131 g\u00f6ndermemizi sa\u011flayan komuttur. Bu \u015fekilde de\u011fi\u015fken kopyalanmas\u0131 engellenmekte ve direkt olarak referans\u0131 arac\u0131l\u0131\u011f\u0131yla ilgili de\u011fi\u015fkene fiziksel m\u00fcdahalede bulunulmaktad\u0131r.<\/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 refa = 5;\r\n            RefMetod(ref refa);\r\n            Console.WriteLine($&quot;refa : {refa}&quot;);\r\n            Console.Read();\r\n        }\r\n        static void RefMetod(ref int a)\r\n        {\r\n            a = 15;\r\n        }\r\n    }\r\n<\/pre>\n<h3>out Komutu<\/h3>\n<p>Metot i\u00e7indeki bir de\u011feri d\u0131\u015far\u0131daki farkl\u0131 bir de\u011fi\u015fkene aktarmak i\u00e7in kullan\u0131lmaktad\u0131r. Genellikle metotlardan birden fazla de\u011feri geriye d\u00f6nd\u00fcrmek i\u00e7in kullan\u0131lmaktad\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            OutMetod(out int outa);\r\n            Console.WriteLine($&quot;outa : {outa}&quot;);\r\n            Console.Read();\r\n        }\r\n        static void OutMetod(out int a)\r\n        {\r\n            a = 3;\r\n        }\r\n<\/pre>\n<p>ref ile out keywordleri aras\u0131ndaki farka gelirsek e\u011fer;<br \/>\nref, parametreye i\u00e7erisinde m\u00fcdahale ko\u015fulu koymamakta, bu i\u015flevi ihtiyaca d\u00f6n\u00fck opsiyonel b\u0131rakmaktad\u0131r.<br \/>\nout, d\u0131\u015far\u0131ya de\u011fer d\u00f6nd\u00fcrece\u011fi i\u00e7in parametreye bir de\u011fer assign\/atama i\u015flemini \u015fart ko\u015fmaktad\u0131r.<\/p>\n<h3>In Komutu<\/h3>\n<p>C# 7.2 versiyonuyla gelen In komutu sayesinde parametreye verilen de\u011feri sabit tutabilmekteyiz. Yani parametre readonly \u00f6zellik g\u00f6stermektedir.<\/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 ina = 5;\r\n            InMetod(ina);\r\n            Console.Read();\r\n        }\r\n        static void InMetod(in int a)\r\n        {\r\n            Console.WriteLine(a);\r\n        }\r\n    }\r\n<\/pre>\n<p>Burada g\u00f6rm\u00fc\u015f oldu\u011funuz &#8220;a&#8221; parametresinin de\u011feri &#8220;in&#8221; keyword\u00fc sayesinde readonly hale getirilmi\u015ftir. Metot i\u00e7erisinde &#8220;a&#8221; parametresine herhangi bir de\u011fer atama s\u00f6z konusu olursa derleme hatas\u0131yla bu i\u015flem engellenecektir.<\/p>\n<p>Metot kullan\u0131l\u0131rken ilgili parametrenin ba\u015f\u0131na &#8220;in&#8221; komutu verilebilir.<\/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 ina = 5;\r\n            InMetod(in ina);\r\n            Console.Read();\r\n        }\r\n        static void InMetod(in int a)\r\n        {\r\n            Console.WriteLine(a);\r\n        }\r\n    }\r\n<\/pre>\n<p>Bu \u015fekilde i\u015flevsellikte bir de\u011fi\u015fiklik s\u00f6z konusu olmayacakt\u0131r. Bu kullan\u0131m varyasyonlar\u0131nda ki tek fayda kodunuzu okuyan 2. ve 3. \u015fah\u0131slar\u0131n bu metoda g\u00f6nderilen parametrenin de\u011ferinin de\u011fi\u015ftirilmeyece\u011fini bilmesi a\u00e7\u0131s\u0131ndan bilgilendirici olmas\u0131d\u0131r.<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\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>Merhaba, C#&#8217;ta metotlara g\u00f6nderilen parametreler \u00fczerinde farkl\u0131 i\u015flevsellikler g\u00f6steren &#8220;ref&#8221; ve &#8220;out&#8221; keywordleri mevcuttur. C# 7.2 versiyonu ile bu keywordlerin yan\u0131na &#8220;In&#8221; komutuda eklenmi\u015ftir. Gelin bu yeni gelen komutu \u00f6nceki var olanlarla mukayese ederek&#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":255,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,2110],"tags":[2112,2111,2113],"class_list":["post-7144","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","category-c-7-2","tag-c-7-2","tag-c-7-2-in-parameters","tag-in-parameters"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/7144","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=7144"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/7144\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/255"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=7144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=7144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=7144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}