2013-03-22 7 views
17

डीबगिंग करते समय, मैं एक ऑब्जेक्ट के एक ही उदाहरण का उपयोग करने के लिए दो अलग-अलग वर्गों की अपेक्षा कर रहा था। इन दोनों वस्तुओं के लिए सभी गुण समान थे, लेकिन वे दो अलग-अलग उदाहरण थे। क्या वीएस डीबगर में यह बताने का कोई तरीका है?डिबगिंग करते समय, क्या यह बताने का कोई तरीका है कि कोई ऑब्जेक्ट एक अलग उदाहरण है या नहीं?

आदेश पक्का बताने के लिए में, मैं वर्ग के लिए एक क्षेत्र को जोड़ने में सक्षम था:

private string someId = Guid.NewGuid().ToString(); 

तब, जब डीबगिंग, मैं कम से कम है कि क्षेत्र में इन दो में से प्रत्येक के लिए दिखाई दे सकता है। क्या कोई बेहतर तरीका है जिसमें इस डमी आईडी फ़ील्ड को शामिल करने में शामिल नहीं होगा?

+3

ऑब्जेक्ट। रेफरेंस एक्वाल्स (obj1, obj2) –

+0

@ पीटररची तो आप डीबगर में ऐसा कैसे करते हैं? वस्तुओं को जांचने की आवश्यकता है, दो अलग-अलग वर्गों में हैं। –

+1

शिफ्ट + एफ 9, "ऑब्जेक्ट। रेफरेंस एक्वाल्स (ओबीजे 1, ओबीजे 2)" टाइप करें और रीवैलुएट या एड वॉच दबाएं। या वॉच विंडो में नाम कॉलम में बस "ऑब्जेक्ट। रेफरेंस एक्वाल्स (obj1, obj2)" टाइप करें। –

उत्तर

34

स्थानीय विंडो में, डिबगिंग करते समय, इंस्टेंस पर राइट-क्लिक करें और "ऑब्जेक्ट आईडी बनाएं" चुनें।

यह इस उदाहरण के लिए अनन्य संख्या जोड़ देगा जो आपको डीबगर में टूल 0 युक्तियों के साथ-साथ घड़ी विंडो में भी उदाहरण दिखाई देता है।

enter image description here

enter image description here

+0

धन्यवाद, लेकिन जब मैं डिबगिंग करते हैं तो मैं चर पर क्लिक-क्लिक करता हूं, लेकिन मुझे "ऑब्जेक्ट आईडी बनाएं" दिखाई नहीं देता है। –

+0

समझ गया! आपको इसे अपनी लोकल विंडो में करना होगा: http://blogs.msdn.com/b/zainnab/archive/2010/03/04/make-objectid-vstipdebug0015.aspx। उत्कृष्ट टिप! धन्यवाद! –

+0

एक मिलियन धन्यवाद आप !!!! –

4

Object.Equals Method (Object, Object)

संपादित करें: संदर्भ समानता का उपयोग ReferenceEquals

संपादित 2 देखने के लिए: डिबगिंग, डिबग मेनू, खिड़कियों पर जाएं जबकि -> तत्काल खिड़की (IntelliSense यहाँ काम करना चाहिए) और ?Object.ReferenceEquals(obj1, obj2)

+1

ऐसा नहीं करता है, क्योंकि यह आभासी। इसे व्युत्पन्न वर्ग द्वारा ओवरराइड किया जा सकता है। –

+3

संदर्भ एक्वाल्स का उपयोग करें, बराबर नहीं। –

+0

क्या कोई पुष्टि कर सकता है कि (ऑब्जेक्ट) p1 == (ऑब्जेक्ट) पी 2; एक ही चीज़ हासिल करेंगे, लेकिन थोड़ा तेज़? मुझे 100% याद नहीं है। टिप के लिए –

1

ऊपर उत्तर देने के लिए इसके अलावा, आप भी संकेत दिए गए तुलना कर सकते हैं। यदि आपके पास दो ऑब्जेक्ट्स obj1 और obj2 हैं, तो आप उनके पते: &obj1 और &obj2 के साथ जांच सकते हैं (उदा। विंडो में)।

ध्यान दें कि वस्तुओं को .NET रनटाइम द्वारा चारों ओर स्थानांतरित किया जा सकता है, इसलिए बीच में कुछ कोड निष्पादन के साथ अलग ऑब्जेक्ट के दो पता चेक अलग-अलग पते में हो सकते हैं।

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

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