2009-07-19 12 views
19

असल में सवाल क्यों Console.WriteLine मैं इस छोटे विधि IntelliSense का उपयोग कर पाया के लिए Console.Out.WriteLineConsole.Out.WriteLine क्यों मौजूद है?

एक आवरण होने के लिए सिर्फ मौजूद नहीं होना चाहिए, तो Console.WriteLine विधि के लिए .NET reflector और 'decompiled' कोड खोला और यह पाया:

public static void WriteLine(string value) 
{ 
    Out.WriteLine(value); 
} 

तो WriteLine क्यों इस तरह कार्यान्वित किया गया है? क्या यह पूरी तरह से शॉर्टकट है या क्या कोई और कारण है?

उत्तर

44

Console.WriteLine एक स्थिर विधि है। Console.Out एक स्थैतिक वस्तु है जो किसी भी विधि के पैरामीटर के रूप में पारित की जा सकती है जो TextWriter लेती है, और वह विधि गैर स्थैतिक सदस्य विधि WriteLine पर कॉल कर सकती है।

एक उदाहरण है, जहां यह उपयोगी होगा अनुकूलन प्रवेश दिनचर्या, जहां stdout (Console.Out), stderr (Console.Error) या कहीं नहीं (System.IO.TextWriter.Null) के उत्पादन को भेजने के लिए चाहते हो सकता है किसी प्रकार का, या कुछ और कुछ क्रम पर आधारित है शर्त।

4

ब्रैड अब्राम (माइक्रोसॉफ्ट में सीएलआर और .NET ढांचे दोनों के संस्थापक सदस्य) निम्नलिखित कहते हैं।

कंसोल। राइटलाइन() कंसोल के लिए बस एक शॉर्टकट है। आउट। राइटलाइनकंसोल को लिखना इतना आसान बनाने के लिए WriteLine propery द्वारा अधिभारित किया गया था।

स्रोत: पुस्तक "एंडर्स हेजल्सबर्ग द्वारा सी # प्रोग्रामिंग भाषा"।

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