﻿
{"id":337,"date":"2012-03-31T07:55:34","date_gmt":"2012-03-31T07:55:34","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=337"},"modified":"2012-04-19T21:22:42","modified_gmt":"2012-04-19T21:22:42","slug":"string-turu-ve-ozellikleri","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/string-turu-ve-ozellikleri\/","title":{"rendered":"String T\u00fcr\u00fc ve \u00d6zellikleri"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>String t\u00fcr\u00fc, karakterleri char t\u00fcr\u00fcnden olan bir dizi yap\u0131s\u0131d\u0131r.Bellekte saklanma \u015fekilleri dizileri an\u0131msat\u0131r ancak dizilerden biraz farkl\u0131d\u0131r.Bu yaz\u0131da string t\u00fcr\u00fcyle ilgili genel k\u00fclt\u00fcr\u00fcn\u00fcz\u00fc artt\u0131racak konulara de\u011finece\u011fiz.<br \/>\n<!--more--> String T\u00fcr\u00fcn\u00fcn \u00d6zellikleri<br \/>\n\u015eimdi programc\u0131lar\u0131n \u015fa\u015f\u0131racaklar\u0131 bir durumdan bahsedece\u011fim.String t\u00fcr\u00fcn\u00fc biz de\u011fer tipi bir de\u011fi\u015fken olarak sanar\u0131z.Asl\u0131nda String t\u00fcr\u00fc , referans t\u00fcr\u00fc olup belle\u011fin \u201cheap\u201d alan\u0131nda tutulur.String tipinden bir de\u011fi\u015fken tan\u0131lad\u0131\u011f\u0131m\u0131zda bize ne kadar de\u011fer tipi gibi gelsede, arka planda System.String s\u0131n\u0131f\u0131ndan bir nesne olu\u015fturulmu\u015f olur.<\/p>\n<p>String t\u00fcr\u00fc gibi referans t\u00fcr\u00fc olupta, de\u011fer t\u00fcr\u00fc gibi davranan t\u00fcrlere immutable type(sabit &#8211; de\u011fi\u015fmez t\u00fcrler) denir.Yani bu veri t\u00fcrlerini bir kez tan\u0131mlad\u0131ktan sonra , de\u011ferleri de\u011fi\u015ftirilemez.<br \/>\nString veri t\u00fcr\u00fcde immutable type karakterli oldu\u011fundan dolay\u0131 bir kere tan\u0131mland\u0131ktan sonra bir daha de\u011feri de\u011fi\u015ftirilemez.<br \/>\n&#8220;Ancak ben \u00e7al\u0131\u015fmalar\u0131mda string olarak tan\u0131mlanan de\u011fi\u015fkenlerin de\u011ferini sonradan de\u011fi\u015ftirebiliyorum &#8221; diye s\u00f6yleyebilirsiniz.<br \/>\nO halde nas\u0131l oluyorda de\u011feri daha sonra de\u011fi\u015ftirilebiliyor?<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            string slogan = &quot;Ya\u015fas\u0131n Fenerbah\u00e7e&quot;;\r\n            slogan.Replace(&quot;Fenerbah\u00e7e&quot;, &quot;Kanarya&quot;);\r\n            Console.Write(slogan);\r\n            Console.Read();\r\n<\/pre>\n<p>Yukar\u0131daki string tipinden slogan ad\u0131ndaki de\u011fi\u015fkeni inceleyelim.Replace() metodu uyguland\u0131ktan sonra &#8220;Ya\u015fas\u0131n Kanarya&#8221; olmas\u0131 gerekmektedir.Ancak slogan de\u011fi\u015fkenini yazd\u0131rd\u0131\u011f\u0131m\u0131zda ekran \u00e7\u0131kt\u0131s\u0131 olarak &#8220;Ya\u015fas\u0131n Fenerbah\u00e7e&#8221; yazacakt\u0131r.<br \/>\n\u015eimdide a\u015fa\u011f\u0131daki kod blo\u011funu inceleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            string slogan = &quot;Ya\u015fas\u0131n Fenerbah\u00e7e&quot;;\r\n            slogan = slogan.Replace(&quot;Fenerbah\u00e7e&quot;, &quot;Kanarya&quot;);\r\n            Console.Write(slogan);\r\n            Console.Read();\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131z zaman ekrana &#8220;Ya\u015fas\u0131n Kanarya&#8221; yaz\u0131s\u0131 gelecektir.Burada slogan de\u011fi\u015fkenimizin as\u0131l de\u011feri de\u011fi\u015ftirilmemi\u015ftir.Arka planda olan mevzu \u015fudur;<br \/>\n&#8220;Ya\u015fas\u0131n Fenerbah\u00e7e&#8221; yaz\u0131s\u0131n\u0131 &#8220;Ya\u015fas\u0131n Kanarya&#8221; olarak de\u011fi\u015ftirdi ve ortaya \u00e7\u0131kan bu yeni de\u011fer i\u00e7in yeni bir bellek alan\u0131 olu\u015fturup slogan de\u011fi\u015fkenini bu bellek alan\u0131na i\u015faretledi.Oysa bellek \u00fczerinde &#8220;Ya\u015fas\u0131n Fenerbah\u00e7e&#8221; bilgisi mevcuttur.Ha eri\u015femiyoruz o ayr\u0131.<\/p>\n<hr \/>\n<p>String t\u00fcr\u00fcn\u00fcn di\u011fer de\u011fer t\u00fcrlerinden fark\u0131da null de\u011fer alabiliyor olmas\u0131d\u0131r.int,double vs. gibi t\u00fcrler null de\u011fer almazlar!<br \/>\n\u015euna dikkat etmeliyiz.Bir de\u011ferin null ya da Empty(string.Empty &#8211; Bo\u015f) olmas\u0131 aras\u0131nda fark vard\u0131r.Bir de\u011fi\u015fkenin de\u011feri null oldu\u011fu zaman, bellekte ona alan ayr\u0131lmazken,Empty de ayr\u0131l\u0131r.\u00c7\u00fcnk\u00fc i\u00e7i bo\u015f olacak \u015fekilde bellekte yer i\u015fgal edecektir.<\/p>\n<hr \/>\n<p>String s\u0131n\u0131f\u0131n\u0131n indexer\u0131 kullan\u0131larak istenilen char(karakter) ine ula\u015f\u0131labilir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            string mesaj = &quot;Merhaba D\u00fcnya&quot;;\r\n            Console.Write(mesaj&#x5B;3]);\r\n            Console.Read();\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funun \u00e7\u0131kt\u0131s\u0131 &#8220;h&#8221; olacakt\u0131r.<br \/>\nString s\u0131n\u0131f\u0131n\u0131n Indexer \u0131 ReadOnly(Sadece okunur) dir.A\u015fa\u011f\u0131daki gibi bir i\u015flem hata verecektir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            mesaj&#x5B;4] = &quot;j&quot;;\r\n<\/pre>\n<hr \/>\n<p>Elimizdeki bir char dizisinde karakterlerden metin olu\u015fturabiliriz.Bunu string s\u0131n\u0131f\u0131n\u0131n char[] dizisi isteyen constructor\u0131n\u0131 kullanarak yapabiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            char&#x5B;] karakterler = { 'A', 'N', 'K', 'A', 'R', 'A' };\r\n            string birlestir = new string(karakterler);\r\n            Console.Write(birlestir);\r\n            Console.Read();\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funun \u00e7\u0131kt\u0131s\u0131 &#8220;ANKARA&#8221; olacakt\u0131r.<\/p>\n<hr \/>\n<p>String veri t\u00fcrlerinde &#8220;==&#8221; operat\u00f6r\u00fc bir \u00e7ok operat\u00f6r gibi yeniden t\u00fcklenmi\u015ftir.<br \/>\n\u00d6rnek olarak, iki string de\u011fi\u015fkeni kar\u015f\u0131la\u015ft\u0131rmak amac\u0131yla kullan\u0131ld\u0131\u011f\u0131nda, de\u011fi\u015fkenlerin Equals() metodlar\u0131 kullan\u0131l\u0131r.<\/p>\n<hr \/>\n<p>\u015eunadan dikkat etmek gerekir.String t\u00fcr\u00fcn\u00fcn referans t\u00fcr\u00fc oldu\u011funu \u00f6\u011frendik.De\u011fer t\u00fcrleri belle\u011fin stack alan\u0131nda olu\u015fturulduklar\u0131 i\u00e7in, i\u015fleri bitince an\u0131nda silinebilecek bir yap\u0131lar\u0131 vard\u0131r.Ancak string t\u00fcr\u00fc referans t\u00fcr\u00fc oldu\u011fundan, belle\u011fin heap alan\u0131nda saklan\u0131r ve string t\u00fcr\u00fc de\u011fi\u015fkenlerle i\u015fimiz bitti\u011fi zaman hemen silinmezler.GC(Garbage collector)&#8217;yi bekler.<\/p>\n<p>string t\u00fcr\u00fc hakk\u0131nda bildi\u011fimiz \u00f6\u011frendi\u011fimiz ger\u00e7ekler, sizler kadar benide \u015fa\u015f\u0131rtt\u0131 \ud83d\ude42<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek dile\u011fiyle &#8230;<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>String t\u00fcr\u00fc, karakterleri char t\u00fcr\u00fcnden olan bir dizi yap\u0131s\u0131d\u0131r.Bellekte saklanma \u015fekilleri dizileri an\u0131msat\u0131r ancak dizilerden biraz farkl\u0131d\u0131r.Bu yaz\u0131da string t\u00fcr\u00fcyle ilgili genel k\u00fclt\u00fcr\u00fcn\u00fcz\u00fc artt\u0131racak konulara de\u011finece\u011fiz.<!-- 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":[31],"class_list":["post-337","post","type-post","status-publish","format-standard","hentry","category-c-sharp-c","tag-string"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/337","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=337"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/337\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}