2013-04-10 3 views
5

मैं कोड की निम्न 2 लाइनों है:सी #: 2008 डिबगर क्रियान्वित संपत्ति कोड

lstvbWerteC.Clear(); 
if (...) 

lstvbWerteC सूची < टी > वर्ग गुंजाइश के साथ का एक क्षेत्र है। यदि वीएस 2008 डीबगर में मैंने if स्टेटमेंट पर ब्रेकपॉइंट सेट किया है तो मैं lstvbWerteC.Count 0 होने की अपेक्षा करता हूं, लेकिन इसके बजाय यह है 1. मेरी कक्षा में कुछ गुण हैं जो वास्तव में सूची भरते हैं। डीबगर में साइड इफेक्ट्स को रोकने के लिए सभी गुणों में विशेषता [DebuggerBrowsable (DebuggerBrowsableState.Never)] है। फिर भी जैसे ही स्थानीय विंडो दिखाई दे रही है, डीबगर सूची भरने वाले कोड को निष्पादित करता है। स्थानीय खिड़की के छिपे हुए सूची के साथ सूची हमेशा खाली होने पर खाली होती है। इस प्रकार की समस्या से संबंधित डीबगर विवरण पर किसी भी जानकारी की सराहना की जाएगी।

उत्तर

5

विजुअल स्टूडियो मेनू: टूल्स - विकल्प - डिबगिंग - सामान्य। "संपत्ति मूल्यांकन सक्षम करें" विकल्प अनचेक करें।

यह विजुअल स्टूडियो 2010 से है। विजुअल स्टूडियो 2008 में एक ही विकल्प या कुछ समान होना चाहिए।

1

मुझे लगता है कि आपके द्वारा वर्णित व्यवहार अधिकांश दस्तावेज़ों में अपरिभाषित है। निश्चित रूप से आवश्यकता किसी भी डीबगर (वीएस शामिल!) की तुलना में DebuggerBrowsable विशेषता का सम्मान करना चाहिए। इसके अलावा, डीबग विंडो में किसी आइटम के डिस्प्ले की कमी आवश्यक रूप से गारंटी नहीं देती है कि आइटम डीबगर द्वारा का मूल्यांकन नहीं किया गया है।

"संपत्ति मूल्यांकन सक्षम करें" नामक डिबगिंग विकल्पों के तहत एक विकल्प है जो आपके विशिष्ट मामले में मदद नहीं कर सकता है या नहीं, लेकिन आम तौर पर मैं कहूंगा कि आप इस पर भरोसा नहीं कर सकते हैं।

सलाह का एक सामान्य रूप से दोहराया गया टुकड़ा है: "संपत्ति प्राप्तकर्ताओं के पास [दृश्यमान] दुष्प्रभाव नहीं होना चाहिए।" आपकी संपत्ति गेटर्स पर साइड इफेक्ट्स हैं, और इससे आपके डिबगिंग अनुभव में समस्याएं आ रही हैं, लेकिन यह संभवतया आपकी कक्षा को अन्य डेवलपर्स के लिए पूरी तरह समझने योग्य बना रही है। मेरी सलाह एक नया स्वरूप मानना ​​होगा कि संपत्ति मूल्य प्राप्त करने से सूची की सामग्री में कोई बदलाव नहीं आता है।

+0

+1 "संपत्ति प्राप्तकर्ताओं के पास [दृश्यमान] दुष्प्रभाव नहीं होना चाहिए"। –

संबंधित मुद्दे