मैं बस कुछ कोड में आया जो ToString()
ओवरराइड करता है और कुछ महत्वपूर्ण जानकारी देता है (केवल डीबग जानकारी नहीं)। इस प्रकार के उपयोगकर्ताओं को ToString()
कहा जाता है और उस महत्वपूर्ण डेटा को पार्स कर दिया जाता है।महत्वपूर्ण जानकारी के लिए ToString का उपयोग किया जाना चाहिए?
मेरे राय, पिछले कुछ वर्षों में विभिन्न बिट और टुकड़े पढ़ने से, ToString()
है कि एक नहीं बल्कि कमजोर contract
, अर्थात प्रदर्शन कुछ सार्थक सामान (यदि आप चाहते ) इसे ओवरराइड है।
देखें मैंने कहा प्रदर्शन? जिस कोड पर मैं आया था, वह इस प्रकार के उदाहरणों के पाठपरक प्रतिनिधित्व पर निर्भर था; जो कुछ भी अपेक्षित है उससे कुछ भी जोड़ना सभी प्रकार की समस्याओं का कारण बनता है।
तो, मेरा सवाल यह है कि, यदि किसी ऑब्जेक्ट का टेक्स्ट प्रतिनिधित्व महत्वपूर्ण है, तो ToString()
का उपयोग किया जाना चाहिए या एक और स्पष्ट विधि/प्रॉपर्टी का उपयोग किया जाना चाहिए, उदा। AsText
?
मैं पूरी तरह से सहमत हूं लेकिन तर्क दूंगा कि जब तक ऑब्जेक्ट IFormattable लागू नहीं करता है तब तक ToString विधि टेक्स्ट डेटा को आउटपुट करने के लिए एक अच्छा उम्मीदवार हो सकता है। वहां कई डेटा बाइंडिंग फ्रेमवर्क हैं जो IFormattable के साथ बहुत अच्छे काम करेंगे। MyCustomTextOutputMethod() के मुकाबले टॉस्ट्रिंग .. लेकिन यह नहीं कहना है कि आपके पास दोनों नहीं हो सकते हैं :) – MattDavey
@ मैटडेवी फेयर पॉइंट, हालांकि यह सिर्फ इतना अलग है मानक 'ToString()' विधि को ओवरराइड करना। मैं उस पते को अद्यतन करने के लिए अद्यतन करूंगा, यद्यपि। – dlev
हाँ दो तरीकों के बीच भेद पर जोर देना महत्वपूर्ण है। IFormattable के बारे में मुझे क्या पसंद है यह है कि मानक ऑब्जेक्ट पैटर्न में आपका ऑब्जेक्ट। टॉस्ट्रिंग IFormattable.ToString ("G") को रोकता है, जो आपको एक अच्छा प्रगति पथ देता है :) – MattDavey