﻿
{"id":5831,"date":"2017-03-26T21:37:22","date_gmt":"2017-03-26T21:37:22","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=5831"},"modified":"2017-03-26T21:37:51","modified_gmt":"2017-03-26T21:37:51","slug":"c-custom-collection-initializersozel-koleksiyon-ilklendiricileri","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-custom-collection-initializersozel-koleksiyon-ilklendiricileri\/","title":{"rendered":"C# &#8211; Custom Collection Initializers(\u00d6zel Koleksiyon \u0130lklendiricileri)"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>\u00d6nceki yaz\u0131lar\u0131mda IEnumerable ve IEnumerator interface&#8217;leri ile \u00f6zel koleksiyon yap\u0131s\u0131n\u0131n nas\u0131l olu\u015fturuldu\u011funa de\u011finmi\u015ftik.<em>(\u0130lgili makale : <a href=\"http:\/\/www.gencayyildiz.com\/blog\/cta-ienumerable-ve-ienumerator-interfaceleri-nedir-ve-nasil-kullanilir\/\" target=\"_blank\">C#\u2019ta IEnumerable ve IEnumerator Interfaceleri Nedir? ve Nas\u0131l Kullan\u0131l\u0131r?<\/a>)<\/em> Bu i\u00e7eri\u011fimizde ise olu\u015fturdu\u011fumuz \u00f6zel bir koleksiyonda initializers(ilklendirici\/\u00f6n de\u011fer) \u00f6zelli\u011finin nas\u0131l yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131 \u00fczerine konu\u015fuyor olaca\u011f\u0131z.<\/p>\n<p>\u00d6ncelikle yukar\u0131da vermi\u015f oldu\u011fum adreste bahsedildi\u011fi gibi IEnumerable ve IEnumerator interfaceleri ile \u00f6rnek bir koleksiyon yap\u0131s\u0131 olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    struct Koordinat\r\n    {\r\n        public int x { get; set; }\r\n        public int y { get; set; }\r\n        public int z { get; set; }\r\n        public bool Durum { get; set; }\r\n    }\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Koordinatlar : IEnumerable&lt;Koordinat&gt;\r\n    {\r\n        readonly List&lt;Koordinat&gt; KoordinatListesi = new List&lt;Koordinat&gt;();\r\n        public IEnumerator&lt;Koordinat&gt; GetEnumerator() =&gt; KoordinatListesi.GetEnumerator();\r\n        IEnumerator IEnumerable.GetEnumerator() =&gt; KoordinatListesi.GetEnumerator();\r\n    }\r\n<\/pre>\n<p>Olu\u015fturmu\u015f oldu\u011fumuz &#8220;Koordinatlar&#8221; s\u0131n\u0131f\u0131 IEnumerable koleksiyonu arac\u0131l\u0131\u011f\u0131yla itere edilebilir hale getirilmi\u015ftir. Haliyle foreach d\u00f6ng\u00fcs\u00fcyle bu s\u0131n\u0131f\u0131n nesnesi \u00fczerinde rahat bir \u015fekilde d\u00f6nebiliriz. Amma velakin bu tarz detaylara \u00f6nceki makalede de\u011findi\u011fimiz i\u00e7in hi\u00e7 girmiyorum.<\/p>\n<p>&#8220;Koordinatlar&#8221; s\u0131n\u0131f\u0131 \u00fczerinde a\u015fa\u011f\u0131daki gibi ilklendirici \u00e7al\u0131\u015ft\u0131rmak istiyoruz,<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            Koordinatlar koordinatlar = new Koordinatlar\r\n            {\r\n                new Koordinat { x = 1, y = 3, z = 5, Durum = true },\r\n                new Koordinat { x = 2, y = 4, z = 6, Durum = false  }\r\n            };\r\n<\/pre>\n<p>Ama bu i\u015flemi yapt\u0131\u011f\u0131m\u0131zda a\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcnde oldu\u011fu gibi hatayla kar\u015f\u0131la\u015f\u0131yoruz.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/C-Custom-Collection-Initializers\u00d6zel-Koleksiyon-\u0130lklendiriciler.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5839\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/C-Custom-Collection-Initializers\u00d6zel-Koleksiyon-\u0130lklendiriciler.png\" alt=\"C# - Custom Collection Initializers(\u00d6zel Koleksiyon \u0130lklendiriciler)\" width=\"707\" height=\"310\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/C-Custom-Collection-Initializers\u00d6zel-Koleksiyon-\u0130lklendiriciler.png 707w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/C-Custom-Collection-Initializers\u00d6zel-Koleksiyon-\u0130lklendiriciler-300x132.png 300w\" sizes=\"auto, (max-width: 707px) 100vw, 707px\" \/><\/a><\/p>\n<p>Al\u0131nan hatan\u0131n metinsel halini a\u015fa\u011f\u0131ya al\u0131rsak e\u011fer,<\/p>\n<blockquote><p><em>Severity Code Description Project File Line Suppression State<br \/>\nError CS1061 &#8216;Koordinatlar&#8217; does not contain a definition for &#8216;Add&#8217; and no extension method &#8216;Add&#8217; accepting a first argument of type &#8216;Koordinatlar&#8217; could be found (are you missing a using directive or an assembly reference?)<\/em><\/p><\/blockquote>\n<p>g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere ilgili s\u0131n\u0131f i\u00e7erisinde &#8220;Add&#8221; isminde bir arg\u00fcman\u0131n bulunmad\u0131\u011f\u0131n\u0131 s\u00f6ylemekte ve hatan\u0131n bu eksiklikten kaynakland\u0131\u011f\u0131n\u0131 belirtmektedir.<\/p>\n<p>Hemen &#8220;Koordinatlar&#8221; s\u0131n\u0131f\u0131m\u0131z\u0131n i\u00e7erisine &#8220;Add&#8221; metodunu ekleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Koordinatlar : IEnumerable&lt;Koordinat&gt;\r\n    {\r\n        public void Add(Koordinat k) =&gt; KoordinatListesi.Add(k);\r\n        readonly List&lt;Koordinat&gt; KoordinatListesi = new List&lt;Koordinat&gt;();\r\n        public IEnumerator&lt;Koordinat&gt; GetEnumerator() =&gt; KoordinatListesi.GetEnumerator();\r\n        IEnumerator IEnumerable.GetEnumerator() =&gt; KoordinatListesi.GetEnumerator();\r\n    }\r\n<\/pre>\n<p>\u0130lgili metodu ekledikten sonra ilklendiricimize g\u00f6z atarsak e\u011fer hatam\u0131z\u0131n ortadan kalkt\u0131\u011f\u0131n\u0131 g\u00f6rece\u011fiz.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/C-Custom-Collection-Initializers\u00d6zel-Koleksiyon-\u0130lklendiriciler-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/C-Custom-Collection-Initializers\u00d6zel-Koleksiyon-\u0130lklendiriciler-1.png\" alt=\"C# - Custom Collection Initializers(\u00d6zel Koleksiyon \u0130lklendiriciler)\" width=\"454\" height=\"218\" class=\"aligncenter size-full wp-image-5844\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/C-Custom-Collection-Initializers\u00d6zel-Koleksiyon-\u0130lklendiriciler-1.png 454w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/03\/C-Custom-Collection-Initializers\u00d6zel-Koleksiyon-\u0130lklendiriciler-1-300x144.png 300w\" sizes=\"auto, (max-width: 454px) 100vw, 454px\" \/><\/a><\/p>\n<p>Burada yapm\u0131\u015f oldu\u011fumuz i\u015flemler neticesinde mekanizman\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlad\u0131\u011f\u0131n\u0131z\u0131 d\u00fc\u015f\u00fcn\u00fcyorum. \u0130lklendirici, arkaplanda ilgili s\u0131n\u0131f\u0131n &#8220;Add&#8221; metodunu tetiklemekte ve girilen de\u011feri parametreyle yakayarak i\u015fleme tabi tutmaktad\u0131r.<\/p>\n<p>Burada bilmeniz gereken bir di\u011fer husus ise ilklendiricide belirtilen her bir virg\u00fcl\u00fcn(,) tek ba\u015f\u0131na &#8220;Add&#8221; metodunu temsil etmesidir. <em><strong>Peki bu ne demektir?<\/strong><\/em><\/p>\n<p>&#8220;Add&#8221; metodunun overload\u0131n\u0131 olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Koordinatlar : IEnumerable&lt;Koordinat&gt;\r\n    {\r\n        public void Add(Koordinat k) =&gt; KoordinatListesi.Add(k);\r\n        public void Add(int x, int y, int z, bool Durum) =&gt; KoordinatListesi.Add(new Koordinat { x = x, y = y, z = z, Durum = Durum });\r\n        ...\r\n        ...\r\n        ...\r\n    }\r\n<\/pre>\n<p>\u015eimdide &#8220;Koordinatlar&#8221; s\u0131n\u0131f\u0131ndan tekrardan bir nesne olu\u015fturup ilklendirici ile veri atayal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            Koordinatlar koordinatlar = new Koordinatlar\r\n            {\r\n                new Koordinat { x = 1, y = 3, z = 5, Durum = true },\r\n                {2, 4, 6, false }\r\n            };\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer, ilklendiricideki her bir virg\u00fcl\u00fcn &#8220;Add&#8221; metodunu ayr\u0131 ayr\u0131 \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131 hatta verilerin tipine g\u00f6re &#8220;Add&#8221; metodunun ilgili overload&#8217;\u0131n\u0131 \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131 g\u00f6rmekteyiz.<\/p>\n<p>Bu makalemizde de \u00f6zel olarak olu\u015fturdu\u011fumuz bir koleksiyon yap\u0131s\u0131na nas\u0131l ilklendirici \u00f6zelli\u011fi kazand\u0131r\u0131ld\u0131\u011f\u0131n\u0131 irdelemi\u015f olduk.<\/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, \u00d6nceki yaz\u0131lar\u0131mda IEnumerable ve IEnumerator interface&#8217;leri ile \u00f6zel koleksiyon yap\u0131s\u0131n\u0131n nas\u0131l olu\u015fturuldu\u011funa de\u011finmi\u015ftik.(\u0130lgili makale : C#\u2019ta IEnumerable ve IEnumerator Interfaceleri Nedir? ve Nas\u0131l Kullan\u0131l\u0131r?) Bu i\u00e7eri\u011fimizde ise olu\u015fturdu\u011fumuz \u00f6zel bir koleksiyonda initializers(ilklendirici\/\u00f6n de\u011fer)&#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],"tags":[1653,1651,1043,1044,723,1652],"class_list":["post-5831","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","tag-collection","tag-custom-collection-initializers","tag-ienumerable","tag-ienumerator","tag-initializers","tag-ozel-koleksiyon-ilklendiriciler"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5831","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=5831"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5831\/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=5831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=5831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=5831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}