2010-05-06 14 views

उत्तर

61

System.String, almost जैसे सभी प्रकार .NET में System.Object से निकले हैं। Object में ToString() विधि है और इसलिए String इस विधि को प्राप्त करता है। यह एक वर्चुअल विधि है और String उस प्रकार के नाम को वापस करने के लिए डिफ़ॉल्ट कार्यान्वयन का उपयोग करने के बजाय स्वयं को संदर्भ देने के लिए ओवरराइड करता है। है न कोई डेटा प्रकार

public override string ToString() 
{ 
    return this; 
} 
+0

बहुत बढ़िया जवाब –

1

स्ट्रिंग एक वस्तु है, यह:

परावर्तक से, इस Object में ToString के कार्यान्वयन है:

public virtual string ToString() 
{ 
    return this.GetType().ToString(); 
} 

और यह String में ओवरराइड है। चूंकि स्ट्रिंग एक ऑब्जेक्ट है, यह रूट ऑब्जेक्ट टू ToString() विधि से प्राप्त होता है।

यह सिर्फ जावा, ऑब्जेक्टिव-सी या स्काला :) में तरह

+2

'int' एक' ToString' पद्धति के रूप में अच्छी तरह से है ... –

+0

यह मुझे आश्चर्य :), मैं सिर्फ सोचा सी # जावा की तरह है कि, वहाँ उन चीजों के लिए कोई toString विधि है :) – vodkhang

+0

यह पूंजीकृत नहीं है क्योंकि यह उपनाम है। संकलन के बाद, उपनाम को पूंजीकृत स्ट्रिंग – vodkhang

1

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

9

जैसा कि मार्क बताता है, यह सिर्फ खुद के लिए एक संदर्भ लौट रहा है। लेकिन, यह महत्वपूर्ण क्यों है? सभी मूल प्रकारों को स्वयं का एक स्ट्रिंग प्रतिनिधित्व वापस करना चाहिए। आप किसी भी बुनियादी प्रकार गुजरती हैं और लोग इन यह सामग्री है करने के लिए

public void Log(object o) { 
    Console.WriteLine(o.ToString()); 
} 

यह अनुमति देता है: एक प्रवेश समारोह है कि इस तरह से काम किया है की कल्पना करें। स्ट्रिंग को स्वयं लौटने के बिना, यह बस इसकी सामग्री के बजाय "स्ट्रिंग" प्रिंट करेगा। आप टेम्पलेट फ़ंक्शन के साथ भी वही काम कर सकते हैं।

सोचो यह मूर्खतापूर्ण है? यह मूल रूप से स्ट्रिंग स्वरूपण कार्य करता है। यह "ToString" कहता है जब आप ऐसा करते हैं:

Console.WriteLine("{0}", myString); 
0

सी # में किसी भी वस्तु, एक स्ट्रिंग के लिए विधि है, हालांकि मैं एक कारण नहीं सोच सकते हैं क्यों एक पल ToString पर एक तार के लिए एक स्ट्रिंग डाली हैं() ऑब्जेक्ट प्रकार से विरासत में मिला है, जो निश्चित रूप से एक स्ट्रिंग का एक उदाहरण है।

0

यदि आपकी स्ट्रिंग नल है और आप इसका उपयोग करते हैं तो आप एक नल संदर्भ अपवाद प्राप्त करेंगे। ToString();

निम्नलिखित फेंक देगा:

string.Format("msgBoxTitle = {0}", msgBoxTitle.ToString()) 

बेस्ट सिर्फ लिखने के लिए ... इस फेंक नहीं होंगे।

string.Format("msgBoxTitle = {0}", msgBoxTitle) 
संबंधित मुद्दे