﻿
{"id":5756,"date":"2017-03-10T21:26:55","date_gmt":"2017-03-10T21:26:55","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=5756"},"modified":"2017-03-10T21:26:55","modified_gmt":"2017-03-10T21:26:55","slug":"cta-name-hidingisim-saklama-sorunsali","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/cta-name-hidingisim-saklama-sorunsali\/","title":{"rendered":"C#&#8217;ta Name Hiding(\u0130sim Saklama) Sorunsal\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Ge\u00e7enlerde bir okuyucumdan ald\u0131\u011f\u0131m soru \u00fczerine bu i\u00e7eri\u011fi olu\u015fturmaya karar verdim. Gelen soruda\u00a0okuyucumuz, &#8220;new&#8221; anahtar s\u00f6c\u00fc\u011f\u00fc ile ilgili internette g\u00f6rd\u00fc\u011f\u00fc herhangi bir makalede kar\u015f\u0131la\u015ft\u0131\u011f\u0131 farkl\u0131 bir kullan\u0131mdan bahsetmektedir. Sorumuzun mahiyeti \u015f\u00f6yledir;<\/p>\n<blockquote><p><span style=\"color: #ff6600;\"><em><strong>&#8220;Merhaba Gen\u00e7ay Bey,<\/strong><\/em><\/span><br \/>\n<span style=\"color: #ff6600;\"><em><strong>&#8230;<\/strong><\/em><\/span><br \/>\n<span style=\"color: #ff6600;\"><em><strong>Esas soruma gelirsek e\u011fer, \u015fu adrese g\u00f6z atarsan\u0131z e\u011fer new anahtar s\u00f6zc\u00fc\u011f\u00fc metod olu\u015fturulurken kullan\u0131lm\u0131\u015ft\u0131r. Benim bildi\u011fim C#&#8217;ta new anahtar s\u00f6zc\u00fc\u011f\u00fc sadece nesne talep etmek\/\u00fcretmek i\u00e7in kullan\u0131lan bir keywordd\u00fcr. Denedi\u011fim kadar\u0131yla bu kullan\u0131m bir hata vermemektedir. Merak edip size sormak istedi\u011fim burada new keyword\u00fcn\u00fcn \u00fcstlendi\u011fi g\u00f6rev nedir?&#8221;<\/strong><\/em><\/span><\/p><\/blockquote>\n<p><em style=\"font-size:14px;\">\u00d6ncelike bu soru name hiding\/isim saklama ile ilgili oldu\u011fundan dolay\u0131 siz de\u011ferli okuyucular\u0131m\u0131n konu hakk\u0131nda bilgisi yoksa e\u011fer Interface&#8217;ler \u00fczerine zaman\u0131nda yazm\u0131\u015f oldu\u011fum makalemin name hiding ile ilgili <a href=\"http:\/\/www.gencayyildiz.com\/blog\/cta-interfacearayuz\/3\/\" target=\"_blank\">\u015fu<\/a> adresteki b\u00f6l\u00fcm\u00fc okuman\u0131z\u0131 ve bu makaleye \u00f6yle devam etmenizi tavsiye ederim.<\/em><\/p>\n<p>Hemen arkada\u015f\u0131m\u0131z\u0131n makaledeki g\u00f6rm\u00fc\u015f oldu\u011fu kod par\u00e7as\u0131na benzer bir yap\u0131y\u0131 a\u015fa\u011f\u0131da bizde \u00f6rneklendirelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class A\r\n    {\r\n        public new void X()\r\n        {\r\n\r\n        }\r\n    }\r\n<\/pre>\n<p>Evet&#8230; Olay\u0131 sadele\u015ftirirsek e\u011fer asl\u0131nda arkada\u015f\u0131m\u0131z\u0131n sordu\u011fu C#&#8217;ta kal\u0131t\u0131msal durumlarda name hiding\/isim saklama dedi\u011fimiz terime kar\u015f\u0131l\u0131k gelen olas\u0131 duruma kar\u015f\u0131 derleyiciye bilgilendirme maksatl\u0131 kullan\u0131llan &#8220;new&#8221; anahtar s\u00f6zc\u00fc\u011f\u00fcn\u00fcn ne yapt\u0131\u011f\u0131yla ilgilidir.<\/p>\n<p>new keyword\u00fc bilindi\u011fi gibi her ne kadar nesne talep etmek\/\u00fcretmek i\u00e7in kullan\u0131lsada kal\u0131t\u0131m durumlar\u0131nda name hiding\/isim saklama durumlar\u0131nda bu i\u015flemin yaz\u0131l\u0131m geli\u015ftirici taraf\u0131ndan bilin\u00e7li bir \u015fekilde yap\u0131ld\u0131\u011f\u0131n\u0131 derleyiciye belirtme i\u015fleminide \u00fcstlenmektedir.<\/p>\n<p>Daha do\u011frusu C#&#8217;\u0131n g\u00fcn\u00fcm\u00fcz versiyonlar\u0131 bu i\u015fleme gereksinim duymaks\u0131z\u0131n direkt olarak ilgili membera name hiding i\u015flemini tabi tutacakt\u0131r. Keza hangi s\u00fcr\u00fcm\u00fc bilmiyorum ammaa bir zamanlar olas\u0131 name hiding durumlar\u0131nda derleyici &#8220;<em>e\u011fer name hiding yapacaksan ilgili eleman\u0131 new operat\u00f6r\u00fcyle i\u015faretlemelisin!<\/em>&#8221; diye uyar\u0131yordu. Okuyucumuzun vermi\u015f oldu\u011fu adreste ge\u00e7mi\u015f y\u0131llara ait bir i\u00e7erik oldu\u011fundan dolay\u0131 yazar\u0131n verdi\u011fi kodlarda ilgili hataya kar\u015f\u0131l\u0131k d\u00f6nemin gerekli \u00f6nlemini alm\u0131\u015f olmas\u0131ndan dolay\u0131 new operat\u00f6r\u00fc kullan\u0131lm\u0131\u015ft\u0131r.<\/p>\n<p>Her ne kadar olay teoride bundan ibaret olsada bir \u00f6rnek \u00fczerinde anlat\u0131m yaparak konuyu sonland\u0131rmakta fayda var.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class A\r\n    {\r\n        public void X() { }\r\n    }\r\n\r\n    class B : A\r\n    {\r\n        public void X() { }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer X metodu hem A hem de B s\u0131n\u0131flar\u0131nda mevcuttur. Bir yandan B s\u0131n\u0131f\u0131 A s\u0131n\u0131f\u0131ndan kal\u0131t\u0131m almaktad\u0131r. Eee haliyle burada bir isim saklama s\u00f6z konusudur. \u0130\u015fte eskiden bu tarz bir durumda derleyiciye bu i\u015flemi bilin\u00e7li yap\u0131yorum demek i\u00e7in new keyword\u00fc kullan\u0131l\u0131rd\u0131.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class A\r\n    {\r\n        public void X() { }\r\n    }\r\n\r\n    class B : A\r\n    {\r\n        public new void X() { }\r\n    }\r\n<\/pre>\n<p>\u0130\u015fte bu \u015fekilde. Ama g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere art\u0131k bu keyword\u00fc yazmam\u0131za gerek yoktur. Haliyle yazmaya gerek kalmad\u0131ysa, new keyword\u00fcn\u00fcn bu \u00f6zelli\u011finden bahsetmeyede pek gerek kalmam\u0131\u015f demektir. O y\u00fczden new operat\u00f6r\u00fcn\u00fcn bu niteli\u011fi fazla bilinmemektedir.<\/p>\n<p>Name hiding durumlar\u0131 bir tek metodlara \u00f6zel olmad\u0131\u011f\u0131ndan, s\u0131n\u0131f i\u00e7indeki t\u00fcm elemanlarda olabilece\u011finden dolay\u0131 bu i\u015flemi metod d\u0131\u015f\u0131nda ki di\u011fer yap\u0131lar i\u00e7inde uygulayabilirsiniz.<\/p>\n<p>\u00d6rne\u011fin;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class A\r\n    {\r\n        public int x;\r\n        public string y { get; set; }\r\n        public bool z\r\n        {\r\n            get { return true; }\r\n            set { }\r\n        }\r\n    }\r\n\r\n    class B : A\r\n    {\r\n        public new int x;\r\n        public new string y { get; set; }\r\n        public new bool z\r\n        {\r\n            get { return true; }\r\n            set { }\r\n        }\r\n    }\r\n<\/pre>\n<p>Sona gelirsek e\u011fer yer yer internette yapt\u0131\u011f\u0131n\u0131z ara\u015ft\u0131rmalar neticesinde, okudu\u011funuz makalelerde yahut izledi\u011finiz g\u00f6rsel derslerde bir \u00e7ok komutun g\u00fcn\u00fcm\u00fczde etkisini yitirmi\u015f yahut niteli\u011fi unutulmu\u015f farkl\u0131 kullan\u0131m yerleriyle kar\u015f\u0131la\u015fabilirsiniz. Bu durum sizi eski kaynaklardan uzakla\u015ft\u0131rmas\u0131n. Nihayetinde g\u00fcn\u00fcm\u00fczdeki programlama mant\u0131\u011f\u0131n\u0131n %99 eski kaynaklardakiyle ayn\u0131d\u0131r. Sadece daha geli\u015fmi\u015f, t\u00f6kezlerden kurtulmu\u015f ve yeniliklerle devle\u015ftirilmi\u015f oldu\u011fundan eski kaynaklar g\u00fcn\u00fcm\u00fcz \u00fcr\u00fcn odakl\u0131 \u00e7al\u0131\u015fmalara yeterli deste\u011fi verememektedir. Lakin benim d\u00fc\u015f\u00fcncem temel bir olay\u0131n en anlaml\u0131 ve lezzetli tarifi genellikle eski \u00fcstadlar\u0131n yazd\u0131klar\u0131d\u0131r.<\/p>\n<p>O y\u00fczden siz sorun, biz cevaplayal\u0131m ama eski kaynaklar\u0131n hat\u0131ras\u0131n\u0131 canl\u0131 tutal\u0131m.<\/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, Ge\u00e7enlerde bir okuyucumdan ald\u0131\u011f\u0131m soru \u00fczerine bu i\u00e7eri\u011fi olu\u015fturmaya karar verdim. Gelen soruda\u00a0okuyucumuz, &#8220;new&#8221; anahtar s\u00f6c\u00fc\u011f\u00fc ile ilgili internette g\u00f6rd\u00fc\u011f\u00fc herhangi bir makalede kar\u015f\u0131la\u015ft\u0131\u011f\u0131 farkl\u0131 bir kullan\u0131mdan bahsetmektedir. Sorumuzun mahiyeti \u015f\u00f6yledir; &#8220;Merhaba Gen\u00e7ay&#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":3223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[27,1645,168,1644,1643],"class_list":["post-5756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","tag-c","tag-csharp","tag-interface","tag-isim-saklama","tag-name-hiding"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5756","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=5756"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/5756\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3223"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=5756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=5756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=5756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}