﻿
{"id":6504,"date":"2017-06-02T01:10:11","date_gmt":"2017-06-02T01:10:11","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=6504"},"modified":"2017-06-02T01:10:11","modified_gmt":"2017-06-02T01:10:11","slug":"visual-studio-debuggerdisplay-attributeu-ile-okunabilir-debugging","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/visual-studio-debuggerdisplay-attributeu-ile-okunabilir-debugging\/","title":{"rendered":"Visual Studio &#8211; DebuggerDisplay Attribute&#8217;u \u0130le Okunabilir Debugging"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde biz .NET Developerlar\u0131n; g\u00fcn\u00fcn b\u00fcy\u00fck k\u0131sm\u0131n\u0131 ge\u00e7irdikleri platformu, en g\u00f6zde \u00e7al\u0131\u015fma arkada\u015f\u0131 ve yap\u0131lan i\u015fte en b\u00fcy\u00fck yar ve yard\u0131mc\u0131s\u0131 olan Visual Studio(VS) derleyicisi hakk\u0131nda g\u00fczel bir iyile\u015ftirmeden bahsedece\u011fiz.<\/p>\n<p>Tad\u0131n\u0131 alanlar bilir. Visual Studio, kod yazarken biz yaz\u0131l\u0131mc\u0131lara olduk\u00e7a yard\u0131mc\u0131 olmaktad\u0131r. K\u00fct\u00fcphaneleri sayfaya refere etme esnekli\u011finden, s\u0131n\u0131flar\u0131n hangi k\u00fct\u00fcphaneden geldi\u011finden, break-point nimetinden, efendim NUGET&#8217;\u0131ndan, TFS&#8217;sinden vs. vs.. onlarca hizmeti bize eksiksiz sa\u011flayan, g\u00fczel bir otomasyondur Visual Studio&#8230; Tabi burada t\u00fcm nimetleri saymaya kalkarsak bu makale i\u00e7erik olarak &#8220;\u0130ltifat-\u0131 VS&#8221; ba\u015fl\u0131\u011f\u0131n\u0131 hak edece\u011finden dolay\u0131 hi\u00e7 girmiyorum&#8230;<\/p>\n<p>\u015eimdi yukar\u0131da sayd\u0131\u011f\u0131m \u00f6zelliklerin d\u0131\u015f\u0131nda birini daha ele alal\u0131m. Debugging yani Hata Ay\u0131klama \u00f6zelli\u011fini. Bir projeyi derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131z vakit break-point ile program\u0131n ak\u0131\u015f\u0131n\u0131 kontrol edebiliyor ve Debugging sayesinde nesnelerin detaylar\u0131na eri\u015febiliyoruz.<\/p>\n<p>Mesela a\u015fa\u011f\u0131daki &#8220;MyClass&#8221; s\u0131n\u0131f\u0131 ele alal\u0131m.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging.png\" alt=\"Visual Studio - DebuggerDisplay Attribute&#039;u \u0130le Okunabilir Debugging\" width=\"485\" height=\"377\" class=\"aligncenter size-full wp-image-6509\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging.png 485w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-300x233.png 300w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\" \/><\/a><\/p>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere Debugging an\u0131nda \u00f6rneklendirilen nesne hakk\u0131nda bilgi edinebiliyoruz. Dikkat ederseniz &#8220;MyClass&#8221; nesnesi &#8220;ConsoleApp36&#8221; k\u00fct\u00fcphanesinin i\u00e7erisinde bulunuyormu\u015f. Yani derleyicimiz \u015fimdilik bize bu bilgiyi vermektedir. \u0130\u015fte bu tarz Debugging an\u0131ndaki nesneler hakk\u0131ndaki bilgileri DebuggerDisplay attributeu ile daha da okunabilir hale yahut istedi\u011fimiz ba\u015fka bilgilerle getirebiliriz.<\/p>\n<p>\u015e\u00f6yle ki;<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-2.png\" alt=\"Visual Studio - DebuggerDisplay Attribute&#039;u \u0130le Okunabilir Debugging\" width=\"484\" height=\"270\" class=\"aligncenter size-full wp-image-6517\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-2.png 484w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-2-300x167.png 300w\" sizes=\"auto, (max-width: 484px) 100vw, 484px\" \/><\/a><br \/>\nG\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere DebuggerDisplay niteli\u011finin i\u015flevselli\u011fi okunabilir Debugging sunmaktad\u0131r. Yani bir derleyiciye bu yenili\u011fi kazand\u0131rd\u0131\u011f\u0131m\u0131za g\u00f6re bu i\u015flevselli\u011fi VS&#8217;ye bir nevi \u00f6\u011fretiyoruz diyebiliriz.<\/p>\n<p>Ayr\u0131ca DebuggerDisplay attributeunu s\u0131n\u0131f i\u00e7erisindeki bir property e\u015fli\u011finde de kullanabiliriz.<\/p>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-1.png\" alt=\"Visual Studio - DebuggerDisplay Attribute&#039;u \u0130le Okunabilir Debugging\" width=\"484\" height=\"302\" class=\"aligncenter size-full wp-image-6515\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-1.png 484w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-1-300x187.png 300w\" sizes=\"auto, (max-width: 484px) 100vw, 484px\" \/><\/a><\/p>\n<p>Burada ilgili propertynin ad\u0131n\u0131 attributea verirken s\u00fcsl\u00fc parantezleri &#8220;{}&#8221; kulland\u0131\u011f\u0131m\u0131za dikkat ediniz. Ayriyetten bu propertyi sade ve sadece derleyici kullanaca\u011f\u0131 i\u00e7in private olarak ayarlanmas\u0131 do\u011fru mant\u0131kta olsa gerek&#8230;<\/p>\n<p>E\u011fer ki DebuggerDisplay niteli\u011fini bir propertyde kullanmay\u0131 tercih ediyorsak tabi ki de i\u00e7erisinde i\u015flemsel ya da algoritmik \u00e7al\u0131\u015fmalar\u0131 icra edebilir ve neticelerini niteli\u011fimiz arac\u0131l\u0131\u011f\u0131yla Debugging&#8217;de sergileyebiliriz.<\/p>\n<p>Son olarak bu attributeun benim a\u00e7\u0131mdan as\u0131l g\u00fczel yan\u0131n\u0131 de\u011ferlendirmeye gelebiliriz. Koleksiyon yap\u0131lar\u0131n\u0131n i\u00e7erisindeki elemanlar \u00fczerinde Debugging an\u0131nda aritmatik i\u015flemler yaparak her bir eleman\u0131n hesaplanm\u0131\u015f verilerini liste \u015feklinde a\u015fa\u011f\u0131daki gibi g\u00f6rebiliriz. <em>Dipnot: \u00d6rneklendirme Northwind veritaban\u0131 \u00fczerinde ger\u00e7ekle\u015ftirilmektedir.<\/em><\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;DebuggerDisplay(&quot;{View}&quot;)]\r\n    public partial class Kategoriler\r\n    {\r\n        public int KategoriID { get; set; }\r\n        public string KategoriAdi { get; set; }\r\n        .\r\n        .\r\n        .\r\n        string View { get =&gt; $&quot;{this.KategoriAdi} | Count(\u00dcr\u00fcn) : {Urunler.Count}&quot;; }\r\n    }\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-3.png\" alt=\"Visual Studio - DebuggerDisplay Attribute&#039;u \u0130le Okunabilir Debugging\" width=\"680\" height=\"232\" class=\"aligncenter size-full wp-image-6523\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-3.png 680w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2017\/06\/Visual-Studio-DebuggerDisplay-Attributeu-\u0130le-Okunabilir-Debugging-3-300x102.png 300w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/a><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi koleksiyon i\u00e7erisindeki elemanlar hakk\u0131nda Debugging an\u0131nda daha okunabilir ve ger\u00e7ekten i\u015fe yarar, y\u00f6nlendirici, bilgilendirici bir veri g\u00f6sterebilmi\u015f olduk.<\/p>\n<blockquote><p>DebuggerDisplay niteli\u011fini class ve struct yap\u0131lar\u0131 \u00fczerinde kullanabilirsiniz.<\/p><\/blockquote>\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, Bu i\u00e7eri\u011fimizde biz .NET Developerlar\u0131n; g\u00fcn\u00fcn b\u00fcy\u00fck k\u0131sm\u0131n\u0131 ge\u00e7irdikleri platformu, en g\u00f6zde \u00e7al\u0131\u015fma arkada\u015f\u0131 ve yap\u0131lan i\u015fte en b\u00fcy\u00fck yar ve yard\u0131mc\u0131s\u0131 olan Visual Studio(VS) derleyicisi hakk\u0131nda g\u00fczel bir iyile\u015ftirmeden bahsedece\u011fiz. Tad\u0131n\u0131 alanlar&#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,21],"tags":[1840,1836,1837,26,1839,1838],"class_list":["post-6504","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","category-programlar","tag-debuggerdisplay","tag-debugging","tag-hata-ayiklama","tag-visual-studio","tag-visual-studio-hata-ayiklama","tag-vs"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/6504","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=6504"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/6504\/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=6504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=6504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=6504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}