﻿
{"id":11133,"date":"2019-06-03T11:16:06","date_gmt":"2019-06-03T11:16:06","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=11133"},"modified":"2019-06-03T11:16:06","modified_gmt":"2019-06-03T11:16:06","slug":"c-7-0-deconstruct-metodu","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-7-0-deconstruct-metodu\/","title":{"rendered":"C# 7.0 &#8211; Deconstruct Metodu"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Son zamanlarda her ne kadar C# 8.0 versiyonu \u00f6zelliklerine odaklanm\u0131\u015f olsakta 7.0 versiyonunda ele almad\u0131\u011f\u0131m g\u00fczel bir manevra sa\u011flayan Deconstruct \u00f6zelli\u011fini k\u0131saca sizlerle tan\u0131\u015ft\u0131r\u0131p, esas g\u00fcncel konular\u0131m\u0131zdan yaz\u0131 ak\u0131\u015f\u0131m\u0131za devam etmek istiyorum.<\/p>\n<h3>Deconstruct Metodu Nedir? Ne \u0130\u015flev G\u00f6r\u00fcr?<\/h3>\n<p>Bir s\u0131n\u0131f i\u00e7erisinde &#8220;<em>Deconstruct<\/em>&#8221; ismiyle tan\u0131mlanan metot, compiler taraf\u0131ndan \u00f6zel olarak alg\u0131lanmakta ve s\u0131n\u0131f\u0131n nesnesi \u00fczerinden geriye h\u0131zl\u0131ca Tuple tipte bir de\u011fer d\u00f6nd\u00fcrmemizi sa\u011flamaktad\u0131r.<\/p>\n<p>Kullan\u0131m\u0131 \u015f\u00f6yledir;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Ogrenci\r\n    {\r\n        public string Adi { get; set; }\r\n        public string Soyadi { get; set; }\r\n        public int Yas { get; set; }\r\n        public void Deconstruct(out string adi, out string soyadi)\r\n        {\r\n            adi = Adi;\r\n            soyadi = Soyadi;\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer &#8220;Ogrenci&#8221; s\u0131n\u0131f\u0131 i\u00e7erisinde tan\u0131mlanm\u0131\u015f olan <em>Deconstruct<\/em> isimli fonksiyon geriye bir de\u011fer d\u00f6nd\u00fcrmemekte lakin i\u00e7erisinde out tipte parametreler almaktad\u0131r. Bu parametreler metot i\u00e7erisinde d\u0131\u015far\u0131ya Tuple olarak g\u00f6nderilecek olan nesnenin de\u011ferlerini kar\u015f\u0131lamaktad\u0131rlar. Compiler ilgili metodun \u00f6zel oldu\u011funu isminden alg\u0131layacakt\u0131r ve ilgili s\u0131n\u0131ftan olu\u015fturulan nesneler \u00fczerinde a\u015fa\u011f\u0131daki i\u015flemi yapmam\u0131za olanak tan\u0131yacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            Ogrenci o1 = new Ogrenci()\r\n            {\r\n                Adi = &quot;Gen\u00e7ay&quot;,\r\n                Soyadi = &quot;Y\u0131ld\u0131z&quot;,\r\n                Yas = 35\r\n            };\r\n\r\n            var (ad, soyad) = o1;\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funda olu\u015fturulan &#8220;Ogrenci&#8221; nesnesini refere eden &#8220;o1&#8221; referans\u0131n\u0131 <em>Deconstruct<\/em> kullan\u0131lacak \u015fekilde \u00e7a\u011f\u0131rmakta ve out keyword\u00fc ile d\u0131\u015far\u0131ya g\u00f6nderilen de\u011ferleri g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi Tuple olarak d\u00f6nd\u00fcrecek \u015fekilde kar\u015f\u0131lamaktay\u0131z.<\/p>\n<p>Ya da,<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            var (ad, soyad) = new Ogrenci()\r\n            {\r\n                Adi = &quot;Gen\u00e7ay&quot;,\r\n                Soyadi = &quot;Y\u0131ld\u0131z&quot;,\r\n                Yas = 35\r\n            };\r\n<\/pre>\n<p>\u015feklinde de bir kullan\u0131m s\u00f6z konusu olabilir. Nihayetinde yine bir &#8220;Ogrenci&#8221; nesnesi Tuple kar\u015f\u0131l\u0131\u011f\u0131 olacak \u015fekilde talep edilmektedir.<\/p>\n<p>Yukar\u0131daki her iki kullan\u0131mda da sa\u011fl\u0131kl\u0131 bir \u015fekilde kodumuzun derlenebilmesi i\u00e7in nesnesi al\u0131nan ilgili s\u0131n\u0131f\u0131n i\u00e7erisinde <em>Deconstruct<\/em> isimli metot tan\u0131mlanmal\u0131 ve geriye d\u00f6nd\u00fcr\u00fclecek de\u011ferleri out parametreler ile belirtilmelidir.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki 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, Son zamanlarda her ne kadar C# 8.0 versiyonu \u00f6zelliklerine odaklanm\u0131\u015f olsakta 7.0 versiyonunda ele almad\u0131\u011f\u0131m g\u00fczel bir manevra sa\u011flayan Deconstruct \u00f6zelli\u011fini k\u0131saca sizlerle tan\u0131\u015ft\u0131r\u0131p, esas g\u00fcncel konular\u0131m\u0131zdan yaz\u0131 ak\u0131\u015f\u0131m\u0131za devam etmek istiyorum. Deconstruct&#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":[1490],"tags":[1491,2877,2878,2876],"class_list":["post-11133","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-7-0","tag-c-7-0","tag-c-deconstruct","tag-deconstruct","tag-deconstruct-metodu"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/11133","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=11133"}],"version-history":[{"count":5,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/11133\/revisions"}],"predecessor-version":[{"id":11138,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/11133\/revisions\/11138"}],"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=11133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=11133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=11133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}