यदि आप string
और char[]
की मेमोरी स्टोरेज की तुलना करते हैं, तो वे काफी समान हैं। वे दोनों ढेर पर आवंटित होते हैं (शाब्दिक तारों को छोड़कर जो संकलन समय पर बनाए जाते हैं)। दोनों में कुछ चर होते हैं (लंबाई और इस तरह के लिए), और स्मृति क्षेत्र जिसमें वर्णों की एक सरणी होती है।
हालांकि, string
कैसे बनाया गया है, इस पर निर्भर करता है कि यह स्मृति क्षेत्र इसकी लंबाई की तुलना में बड़ा हो सकता है, यानी स्मृति क्षेत्र के अंत में इसमें कुछ अप्रयुक्त बाइट हैं। char[]
का मेमोरी एरिया हमेशा डेटा द्वारा आवश्यक जितना बड़ा होता है।
आप उदाहरण के लिए एक StringBuilder का उपयोग एक स्ट्रिंग बनाने के लिए, और क्षमता यह की दूरी (लेकिन दो बार से अधिक) से भी बड़ा है, तो यह एक string
वस्तु जो अंत में अप्रयुक्त बाइट का है देता है।
उदाहरण:
// set capacity to 8
StringBuilder s = new StringBuilder(8);
// put four characters in it
s.Append("Ouch");
// get the string
string result = s.ToString();
result
चर अब, एक स्ट्रिंग वस्तु जो चरित्र डेटा कि 16 बाइट्स लंबा है के लिए एक स्मृति क्षेत्र है के लिए अंक, लेकिन केवल पहले 10 उपयोग किया जाता है (चार अक्षर के साथ साथ अंत में एक \x0
चरित्र)।
यह होमवर्क प्रश्न की तरह लगता है लेकिन अगर यह नहीं है ... यदि आपको स्मृति को बचाने के लिए स्ट्रिंग या char [] के बीच चयन करना है, तो शायद आपको सी # में प्रोग्रामिंग नहीं करना चाहिए। मैं यह इसलिए कहता हूं क्योंकि इस्तेमाल की गई स्मृति की मात्रा कम या ज्यादा धोती है क्योंकि स्ट्रिंग में संग्रहीत एक वर्ण एक चरित्र में एक चरित्र स्टोर के समान आकार होता है। – Tony
यह क्यों मायने रखता है? जब तक कि आपके पास दस लाख शब्द नहीं हैं, यह वास्तव में कोई फर्क नहीं पड़ता ... –