﻿
{"id":291,"date":"2012-03-21T00:47:08","date_gmt":"2012-03-21T00:47:08","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=291"},"modified":"2012-05-28T12:58:50","modified_gmt":"2012-05-28T12:58:50","slug":"cta-generic-koleksiyonlar","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/cta-generic-koleksiyonlar\/","title":{"rendered":"C# Generic Koleksiyonlar"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bu yaz\u0131mda C#&#8217;ta Generic koleksiyonlardan bahsedece\u011fim.Generic koleksiyonlar System.Collections.Generic namespacei alt\u0131nda mevcutturlar.Non-Generic koleksiyonlarda tip g\u00fcvenli\u011fi yoktur ancak Generic koleksiyonlar tip g\u00fcvenli\u011fi vard\u0131r.Boxing &#8211; Unboxing i\u015flemleri yapmam\u0131za gerek kalmad\u0131\u011f\u0131ndan performans a\u00e7\u0131s\u0131ndan art\u0131\u015f sa\u011flayacaklard\u0131r.<br \/>\n<!--more--><br \/>\n\u00d6ncelikle Generic koleksiyonlar\u0131n Non-Generic koleksiyonlardan art\u0131s\u0131 eksisi nedir bir bakal\u0131m.Non-Generic koleksiyonlar elemanlar\u0131 object tipten ald\u0131klar\u0131 i\u00e7in Boxing i\u015flemine u\u011fruyorlar.Haliyle elemanlara eri\u015firkende Unboxing i\u015flemi yap\u0131yoruz.Bazen koleksiyonumuzda tek tipten elemanlar oldu\u011fu durumlar olur.Bu ama\u00e7la Non-Generic koleksiyonlar\u0131 kullanarak Boxing-Unboxing i\u015flemleri performans a\u00e7\u0131s\u0131ndan bizi olumsuz etkileyecektir.Halbuki Generic koleksiyonlar\u0131 kullan\u0131rsak, o tipten bir koleksiyon olu\u015fturup , hem tip g\u00fcvenli\u011fini sa\u011flar\u0131z hemde Boxing &#8211; Unboxing i\u015flemine gerek duymam\u0131\u015f oluruz.Buda performans a\u00e7\u0131s\u0131ndan bize katk\u0131 sa\u011flayacakt\u0131r.<\/p>\n<p>Bir \u00e7ok Generic kolleksiyon olmas\u0131na ra\u011fmen ben burada Listve Dictionarykoleksiyonlar\u0131n\u0131 g\u00f6sterece\u011fim.<br \/>\nA\u015fa\u011f\u0131da Non-Generic kolleksiyonlara kar\u015f\u0131l\u0131k gelen Generic kolleksiyonlar listelenmi\u015ftir.<\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td>Generic Kolleksiyon<\/td>\n<td>Non-Generic Kolleksiyon<\/td>\n<\/tr>\n<tr>\n<td>Queue&lt;T&gt;<\/td>\n<td>Queue<\/td>\n<\/tr>\n<tr>\n<td>SortedDictionary&lt;K,T&gt;<\/td>\n<td>SortedList<\/td>\n<\/tr>\n<tr>\n<td>Stack&lt;T&gt;<\/td>\n<td>Stack<\/td>\n<\/tr>\n<tr>\n<td>List&lt;T&gt;<\/td>\n<td>ArrayList<\/td>\n<\/tr>\n<tr>\n<td>Dictionary&lt;K,T&gt;<\/td>\n<td>Hashtable<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Yaz\u0131m\u0131z buraya kadar konuya giri\u015f niteli\u011fi ta\u015f\u0131maktad\u0131r.<br \/>\nBir sonraki sayfada List koleksiyonundan bahsece\u011fim.<br \/>\n<!--nextpage--><br \/>\n<strong>List Koleksiyon &#8211; (ArrayList&#8217;in Generic kar\u015f\u0131l\u0131\u011f\u0131)<\/strong><br \/>\nArrayList koleksiyon yap\u0131s\u0131n\u0131n Generic kar\u015f\u0131\u011f\u0131 List koleksiyon yap\u0131s\u0131d\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">List&lt;string&gt; Lliste = new List&lt;string&gt;();<\/pre>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz Generic List koleksiyonunun imzas\u0131d\u0131r.\u0130mzan\u0131n &lt;&gt; operat\u00f6rleri aras\u0131nda koleksiyonun tipi belirlenir.Bu koleksiyona string tipten ba\u015fka bir de\u011fer giremeyiz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        Lliste.Add(&quot;Gen\u00e7ay&quot;);   \/\/Do\u011fru\r\n        Lliste.Add(&quot;Y\u0131ld\u0131z&quot;);   \/\/Do\u011fru\r\n\/*Lliste koleksiyonu sadece string tipten veri ald\u0131\u011f\u0131 i\u00e7in\r\n ba\u015fkabir tipteki veriyi eklemeye \u00e7al\u0131\u015f\u0131nda derleyici direkt hata verecektir.*\/\r\n        Lliste.Add(12);         \/\/Yanl\u0131\u015f\r\n        Lliste.Add(new Araba());\/\/Yanl\u0131\u015f<\/pre>\n<p>Bir List koleksiyonunun tipi illaki de\u011fer tipinden olmak zorunda de\u011fildir.Bir class tipindende koleksiyon olu\u015fturulabilir.<br \/>\n\u00d6rne\u011fin Araba.cs class\u0131m\u0131z olsun.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        class Araba\r\n        {\r\n        }\r\n<\/pre>\n<p>Art\u0131k Araba tipinden nesneler bu koleksiyon i\u00e7ine eklenebilir.Araba.cs s\u0131n\u0131f\u0131ndan t\u00fcreyen s\u0131n\u0131flarda \u00e7ok bi\u00e7imlilik sayesinde bu koleksiyona eklenebilirler.\u00d6rne\u011fin Araba.cs s\u0131n\u0131f\u0131ndan kal\u0131t\u0131m alan Mercedes.cs ve kal\u0131t\u0131m almayan Ford.cs s\u0131n\u0131flar\u0131m\u0131z olsun.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Mercedes:Araba\r\n    {\r\n    }\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Ford\r\n    {\r\n    }\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            Lliste.Add(new Araba());    \/\/Do\u011fru\r\n            Lliste.Add(new Mercedes()); \/\/Do\u011fru\r\n            Lliste.Add(new Ford());     \/\/Yanl\u0131\u015f\r\n\/\/Ford s\u0131n\u0131f\u0131ndan nesneyi koleksiyona ekleyemeden derleyici hata verecektir.\r\n<\/pre>\n<p>Koleksiyonun metod ve propertylerinin ArrayList&#8217;ten bir fark\u0131 yoktur.<br \/>\nBir sonraki sayfada Dictionary koleksiyonundan bahsedece\u011fim.<br \/>\n<!--nextpage--><br \/>\n<strong>Dictionary Koleksiyon &#8211; (Hastable&#8217;nin Generic kar\u015f\u0131l\u0131\u011f\u0131)<\/strong><br \/>\nNon-Generik koleksiyonlardan Hashtable koleksiyon yap\u0131s\u0131n\u0131n Generic koleksiyon kar\u015f\u0131l\u0131\u011f\u0131 Dictionary koleksiyondur.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">Dictionary&lt;string,int&gt; Dlist = new Dictionary&lt;string,int&gt;();<\/pre>\n<p>Dictionary koleksiyonunun imzas\u0131 yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibidir.&lt;&gt; operat\u00f6rleri aras\u0131na iki tip al\u0131r.Birinci de\u011fer alaca\u011f\u0131 keylerin tipleri, ikincisi ise valuelerin tipleridir.Yukar\u0131daki imza,Keyleri string,Valueleride int olarak almaktad\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            Dlist.Add(&quot;Do\u011fum Y\u0131l\u0131 : &quot;,1992);   \/\/Do\u011fru\r\n            Dlist.Add(&quot;Ya\u015f\u0131&quot;, 20);             \/\/Do\u011fru\r\n            Dlist.Add(&quot;Ad\u0131&quot;,&quot;Gen\u00e7ay&quot;);         \/\/Yanl\u0131\u015f\r\n            Dlist.Add(123,&quot;Deneme&quot;);           \/\/Yanl\u0131\u015f\r\n\/\/Yanl\u0131\u015f de\u011ferler koleksiyona eklenmeye \u00e7al\u0131\u015f\u0131ld\u0131\u011f\u0131 anda derleyici hata verecektir.\r\n<\/pre>\n<p>Metodlar\u0131 ve propertyleri Hastable&#8217;inkinden farks\u0131zd\u0131r.<\/p>\n<p>Bu yaz\u0131m\u0131nda sonuna gelmi\u015f olduk.<br \/>\nBir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere..<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar.<\/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>Bu yaz\u0131mda C#&#8217;ta Generic koleksiyonlardan bahsedece\u011fim.Generic koleksiyonlar System.Collections.Generic namespacei alt\u0131nda mevcutturlar.Non-Generic koleksiyonlarda tip g\u00fcvenli\u011fi yoktur ancak Generic koleksiyonlar tip g\u00fcvenli\u011fi vard\u0131r.Boxing &#8211; Unboxing i\u015flemleri yapmam\u0131za gerek kalmad\u0131\u011f\u0131ndan performans a\u00e7\u0131s\u0131ndan art\u0131\u015f sa\u011flayacaklard\u0131r.<!-- 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":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[145],"class_list":["post-291","post","type-post","status-publish","format-standard","hentry","category-c-sharp-c","tag-generic"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/291","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=291"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/291\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=291"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}