2010-06-10 17 views

उत्तर

76

Console.WriteLine डीबग या रिलीज में मानक आउटपुट स्ट्रीम को लिखता है। Debug.WriteLineListeners संग्रह में ट्रेस श्रोताओं को लिखता है, लेकिन केवल डीबग में चलते समय। जब एप्लिकेशन को रिलीज़ कॉन्फ़िगरेशन में संकलित किया जाता है, तो डीबग तत्व कोड में संकलित नहीं किए जाएंगे।

Debug.WriteLine रूप Listeners संग्रह में सभी का पता लगाने श्रोताओं के लिए लिखते हैं, यह संभव है इस (विजुअल स्टूडियो उत्पादन खिड़की तीसरे पक्ष के आवेदन एक से अधिक जगह में उत्पादन, कंसोल, लॉग फ़ाइल है, जो एक श्रोता पंजीकृत करता है हो सकता है कि (मेरा मानना ​​है कि DebugView यह करता है), आदि)।

+7

कड़ाई से डीबग व्यू मूल विंडोज एपीआई कॉल 'आउटपुटडिबगस्ट्रिंग' (और 'डीबगप्रिंट') के माध्यम से लॉग इन संदेशों पर नज़र रखता है। 'DefaultTraceListener' 'आउटपुटडिबगस्ट्रिंग' को लिखता है, यही कारण है कि डीबग व्यू आउटपुट को देखता है। http://msdn.microsoft.com/en-us/library/system.diagnostics.defaulttracelistener.aspx – MarkJ

27

Console.WriteLine() कंसोल मोड प्रोग्राम के लिए है। विजुअल स्टूडियो होस्टिंग प्रक्रिया की एक अच्छी सुविधा विजुअल स्टूडियो आउटपुट विंडो में अपना आउटपुट दिखाई देती है जबकि कंसोल नहीं होने वाली प्रक्रियाओं के लिए डीबगिंग करते हैं। डीबगिंग करते समय यह बहुत उपयोगी है लेकिन सावधान रहें कि जब आप रिलीज बिल्ड बनाने के लिए तैयार हों तो आपको इस कोड को हटा देना चाहिए (या #ifdef DEBUG के साथ इसे लपेटें)। यह अन्यथा आपके कार्यक्रम में अनावश्यक ओवरहेड जोड़ देगा। यह डीबग ट्रेसिंग के लिए आदर्श से कम बनाता है।

Debug.WriteLine() यदि आप DEBUG सशर्त # परिभाषित के साथ बनाते हैं तो ट्रेसिंग जानकारी उत्पन्न करता है। डीबग बिल्ड में डिफ़ॉल्ट रूप से कौन सा है। जहां आउटपुट समाप्त होता है, app.exe.config फ़ाइल में कॉन्फ़िगर किया जा सकता है। यदि यह कॉन्फ़िगर ओवरराइड नहीं है, तो .NET स्वचालित रूप से DefaultTraceListener कक्षा का उदाहरण प्रदान करता है। यह Debug.WriteLine() पाठ को विंडोज OutputDebugString() एपीआई फ़ंक्शन डीबगर पर भेजता है। विजुअल स्टूडियो डीबगर बनाता है जो आउटपुट विंडो में दिखाई देता है, जैसे कि Console.WriteLine()

Debug.WriteLine() का एक स्पष्ट लाभ यह है कि यह रिलीज बिल्ड में कोई ओवरहेड उत्पन्न नहीं करता है, कॉल प्रभावी ढंग से हटा दिए जाते हैं। हालांकि यह समग्र स्वरूपण का समर्थन नहीं करता है, इसके लिए आपको String.Format() की आवश्यकता होगी। डीबग ट्रेसिंग के लिए, डीबग क्लास आपकी पसंद होनी चाहिए।

14

यदि कंसोल का उपयोग करने का आपका उद्देश्य पूरी तरह से डिबगिंग के लिए है, तो आप बेहतर उपयोग Debug.WriteLine का उपयोग करते हैं।

यदि आप अपने उपयोगकर्ता को एक संदेश दिखाना चाहते हैं, तो आप Console.WriteLine का उपयोग करेंगे।

डीबग। राइटलाइन केवल आपके आवेदन को डीबग करने के उद्देश्य से है। रिलीज मोड में आपके डीबग स्टेटमेंट को अनदेखा कर दिया जाएगा।

कंसोल एप्लिकेशन का एक और उपयोग निजी असेंबली का परीक्षण करना है। डीएलएल के संकलित संस्करण का परीक्षण करने के लिए कुछ प्रकार के जीयूआई परीक्षण दोहन बनाने के पारंपरिक दृष्टिकोण की बजाय, आप कंसोल एप्लिकेशन के रूप में डीएलएल को फिर से बना सकते हैं और कंसोल से इनपुट/आउटपुट कर सकते हैं। मुझे यह तकनीक एक जीयूआई परीक्षण दोहन बनाने में समय बिताने से तेज होने के लिए मिली है।

+2

"अगर आप अपने उपयोगकर्ता को एक संदेश दिखाना चाहते हैं, तो आप console.writeline का उपयोग करेंगे।"यह कुछ लोगों को भ्रमित कर सकता है क्योंकि यह कंसोल एप्लिकेशन में निष्पादित होने पर केवल उपयोगकर्ता को कुछ दिखाएगा। –

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