वे अलग-अलग हैं जैसा कि पहले से ही उत्तर दिया गया है।
static void Main(string[] args)
{
string s1 = null;
string s2 = string.Empty;
string s3 = "";
Console.WriteLine(s1 == s2);
Console.WriteLine(s1 == s3);
Console.WriteLine(s2 == s3);
}
results:
false - since null is different from string.empty
false - since null is different from ""
true - since "" is same as string.empty
खाली स्ट्रिंग बनाम अशक्त स्ट्रिंग के प्रबंधन के साथ समस्या एक समस्या बन रही है जब आपको या तो इसे एक फ्लैट फ़ाइल में बनाए रखने या संचार के माध्यम से इसे स्थानांतरित करने की आवश्यकता होती है, इसलिए मुझे लगता है कि यह इस पृष्ठ पर जाने वाले अन्य लोगों के लिए उपयोगी हो सकता है जो एक अच्छा समाधान दे सकते हैं। वह विशेष समस्या।
स्ट्रिंग को फ़ाइल या संचार में सहेजने के उद्देश्य से:
आप शायद स्ट्रिंग को बाइट में बदलना चाहते हैं।
एक अच्छी प्रैक्टिस जो मैं सुझाता हूं कि हेडर बाइट्स के 2 सेगमेंट को आपकी परिवर्तित स्ट्रिंग में जोड़ना है।
खंड 1 - मेटा जानकारी जो 1 बाइट में संग्रहीत होती है और अगले खंड की लंबाई का वर्णन करती है।
खंड 2 - सहेजे जाने के लिए स्ट्रिंग की लंबाई रखता है।
उदाहरण:
स्ट्रिंग "abcd" - को सरल बनाने के लिए मैं इसे ASCII एनकोडर का उपयोग करके परिवर्तित करूँगा और {65,66,67,68} प्राप्त करूँगा।
गणना खंड 2 में 4 उपज होगी - इसलिए 4 बाइट्स परिवर्तित स्ट्रिंग की लंबाई हैं।
गणना खंड 1 में 1 उपज होगी - जैसा कि परिवर्तित स्ट्रिंग जानकारी की लंबाई जानकारी रखने के लिए सिर्फ 1 बाइट का उपयोग किया गया था (जो 4 था, अर्थात यदि यह 260 था तो मुझे 2 मिलेगा)
बाइट्स की नई पट्टी अब {1,4,65,66,67,68} होगी जिसे एक फाइल में सेव किया जा सकता है।
विषय के संबंध में लाभ यह है कि अगर मेरे पास बचाने के लिए एक खाली स्ट्रिंग थी, तो मुझे 0 की लंबाई में बाइट्स के एक खाली सरणी को रूपांतरण से मिलेगा और खंडों की गणना के बाद मैं समाप्त हो जाएगा {1,0} जो हो सकता है सहेजा और बाद में लोड किया गया और एक खाली स्ट्रिंग में वापस व्याख्या की गई। दूसरी ओर अगर मेरी स्ट्रिंग में अशक्त मान था तो मैं अपने बाइट को सहेजने के लिए बाइट सरणी के रूप में {0} होने पर समाप्त कर दूंगा और फिर से लोड किए जाने पर इसे वापस शून्य पर व्याख्या किया जा सकता है।
अधिक लाभ हैं जैसे कि पता है कि क्या लोड किया जाना है या जमा हो जाता है यदि आप कई तार जगते हैं।
इस विषय पर वापस - यह अच्छी तरह से प्रदूषित हो जाएगा जैसा कि वर्णित समान प्रिंसिपल किसी भी सिस्टम द्वारा रिक्त से नल को अलग करने के लिए उपयोग किया जा रहा है .. इसलिए हाँ string.Empty शून्य से अधिक स्मृति लेता है, हालांकि मैं नहीं कर सकता इसे प्रदूषण कहें .. यह सिर्फ 1 और बाइट है।