2012-04-09 17 views
6

कभी-कभी जब मैं कक्षा की .ToString() विधि को कॉल करता हूं, तो यह कक्षा का पूर्णतः योग्य नाम देता है। लेकिन कुछ वर्ग/संरचनाओं (जैसे Int32) के लिए यह ऑब्जेक्ट (पूर्णांक का मान) पर एक स्ट्रिंग correspoding देता है। क्या इसका मतलब यह है कि Int32 वर्ग ToString() विधि ओवरराइड करता है, और कक्षाएं जो पूरी तरह से योग्य नाम लौटाती हैं, इसे ओवरराइड नहीं करती हैं, बल्कि इसके बजाय बेस (Object) ToString() विधि को कॉल करें? क्या Object.ToString() कार्यान्वयन सिर्फ वर्ग के पूर्णतः योग्य नाम को वापस करता है?.ToString() विधि कैसे काम करती है?

+6

हाँ, आप सही हैं। – MarcinJuraszek

+0

सवाल क्या है? क्या यह मेरी समझ सही है? –

उत्तर

17

कभी कभी जब मैं ToString विधि यह उद्देश्य यह है कि कॉल प्राप्त की क्रम प्रकार के पूरी तरह से योग्य नाम देता है कहते हैं।

सही।

लेकिन कुछ प्रकार के लिए, इस तरह के रूप System.Int32, ToString रिटर्न रिसीवर का मान एक स्ट्रिंग के लिए परिवर्तित।

सही।

System.Int32 struct ToString विधि ओवरराइड करता है?

हां।

अन्य प्रकार जिसका ToString तरीकों को पूरी तरह से योग्य प्रकार नाम नहीं ओवरराइड ToString वापसी है?

शायद यह मामला है, हां। बेशक, वे विधि को ओवरराइड कर सकते हैं और ओवरराइडिंग विधि बेस क्लास विधि के समान ही काम करते हैं, लेकिन यह थोड़ा सा व्यर्थ होगा।

उन मामलों में

तो, ToString बुला सिर्फ ToString की System.Object कार्यान्वयन है, जो पूरी तरह से योग्य नाम रिटर्न कॉल?

सही।

आपको लगता है कि यह कैसे काम करता है इसकी एक ठोस समझ है। मेरी केवल सुधार ध्यान दें कि System.Int32 एक struct, नहीं एक वर्ग है किया जाएगा।

+0

मैंने अब संपादित किया है – deen

+5

@Ala: क्या आप मुझसे पूछ रहे हैं कि किसी ने आपका प्रश्न क्यों कम किया? शायद क्योंकि यह ToString विधि ** के लिए प्रलेखन पृष्ठ पर ** का उत्तर दिया गया है। यदि आपके पास किसी विधि के बारे में कोई प्रश्न है, तो उस विधि के दस्तावेज़ को पढ़ने का प्रयास करें; अगर यह आपके प्रश्न का उत्तर नहीं देता है तो किसी उत्तर के लिए वेब या इस साइट को खोजने का प्रयास करें। अपने प्रश्न का उत्तर देने के लिए लोगों को अपने व्यस्त दिन से बाहर निकलने के लिए कहने के बजाय, पहले स्वयं को एक बुनियादी, न्यूनतम स्तर का शोध करें। –

+0

मैं तुम्हें नहीं मिला था। आपने प्रत्येक पंक्ति को सही उत्तर दिया? यह उत्तरवार था जिसकी मुझे उम्मीद थी – deen

8

क्या आपने अपने प्रश्न का उत्तर खोजने की भी कोशिश की है?

http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx

ToString .नेट फ्रेमवर्क में प्रमुख स्वरूपण तरीका है। यह किसी ऑब्जेक्ट को अपनी स्ट्रिंग प्रस्तुति में परिवर्तित करता है ताकि यह प्रदर्शन के लिए उपयुक्त हो। (.NET फ्रेमवर्क में स्वरूपण समर्थन के बारे में जानकारी के लिए, प्रकार का प्रारूपण देखें।)

ToString विधि के डिफ़ॉल्ट कार्यान्वयन, पूरी तरह से वस्तु के प्रकार के योग्य नाम देता है निम्न उदाहरण के रूप में शो।

क्योंकि वस्तु नेट फ्रेमवर्क में सभी प्रकार के संदर्भ के आधार वर्ग है, इस व्यवहार संदर्भ प्रकार नहीं है कि ओवरराइड ToString विधि द्वारा विरासत में मिली है। निम्नलिखित उदाहरण यह दिखाता है। यह ऑब्जेक्ट 1 नामक एक वर्ग को परिभाषित करता है जो सभी ऑब्जेक्ट सदस्यों के डिफ़ॉल्ट कार्यान्वयन को स्वीकार करता है। इसकी ToString विधि ऑब्जेक्ट का पूर्णतः योग्य प्रकार का नाम देता है।

0

सी # में ToString() विधि से संबंधित कुछ बिंदु।

  1. ToString() विधि आधार System.Object वर्ग में परिभाषित किया गया है और इसलिए सभी प्रकार और उपयोग करने के लिए मापदंडों के लिए अपने उपलब्ध है।

  2. system.object बेस क्लास द्वारा प्रदान की जाने वाली ToString() का डिफ़ॉल्ट कार्यान्वयन आपको नामस्थान सहित प्रकार का पूरा नाम देगा।

  3. आप डिफ़ॉल्ट कार्यान्वयन नहीं करना चाहते हैं, तो आप ToString() विधि ओवरराइड कर सकते हैं। हाँ ToString() विधि अतिसंवेदनशील है। और आप इसे कहां ओवरराइड करते हैं? आप इसे कक्षा में ओवरराइड करते हैं जहां आप इसका डिफ़ॉल्ट कार्यान्वयन नहीं चाहते हैं।

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