2009-06-19 10 views
7

मैं सी # .NET में कुछ बहुत स्ट्रिंग-हेरफेर प्रधान कोड बना रही हूँ और कुछ योएल Spolsky लेख मैं एक समय पहले पढ़ने याद के बारे में उत्सुक हो गया है:.NET स्ट्रिंग का आंतरिक प्रारूप क्या है?

http://www.joelonsoftware.com/articles/fog0000000319.html
http://www.joelonsoftware.com/articles/Unicode.html

तो, कैसे करता है। नेट यह करते हैं? प्रति बाइट दो बाइट? कुछ यूनिकोड वर्ण हैं^एच^एच^एच^एच^एच कोड पॉइंट्स जिन्हें उससे अधिक की आवश्यकता है। और लंबाई एन्कोड कैसे है?

उत्तर

17

जॉन स्कीट यहां आने से पहले उसके excellent blog on strings सी # में एक लिंक है।

वर्तमान कार्यान्वयन में कम से कम, तार का समय लग 20+ (एन/2) * 4 बाइट्स, जहां n स्ट्रिंग में वर्णों की संख्या है (एन/2 नीचे का मूल्य गोलाई)। स्ट्रिंग प्रकार असामान्य है कि ऑब्जेक्ट का आकार

+12

बह हंबग। मेरे लिए कहने के लिए बहुत कुछ नहीं, वास्तव में :) –

+4

जो आपको ब्लॉग करने के लिए सिखाएगा! –

+1

यह वास्तव में मेरे ब्लॉग पर नहीं है - यह मेरे लेख साइट पर है :) मुझे लगता है कि मुझे किसी प्रकार की रिप-शेयरिंग योजना पर बातचीत करनी चाहिए। दयालु एक गरीब ब्लॉगर/लेख पोस्टर ... –

9

.NET UTF-16 का उपयोग करता है।

System.String on MSDN से:

"एक स्ट्रिंग में प्रत्येक यूनिकोड वर्ण यूनिकोड अदिश मूल्य द्वारा परिभाषित किया गया है, यह भी एक यूनिकोड कोड बिंदु या क्रमसूचक (अंकीय) यूनिकोड वर्ण का मूल्य कहा जाता है प्रत्येक कोड बिंदु का उपयोग कर एनकोडेड है। यूटीएफ -16 एन्कोडिंग, और एन्कोडिंग के प्रत्येक तत्व का संख्यात्मक मान एक चार वस्तु द्वारा दर्शाया जाता है। "