2011-06-28 13 views
7

मेरी समझ के अनुसार, सी # स्ट्रिंग के अंत में कोई शून्य-समाप्ति नहीं है। तो लंबाई को कैसे पता चलता है कि स्ट्रिंग के कितने अक्षर हैं?स्ट्रिंग। लम्बाई सी # में कैसे लागू की जाती है?

धन्यवाद, ज्ञान

उत्तर

15

यह वस्तु के भीतर एक क्षेत्र में संग्रह किया गया है।

ऐसा होता है, तार हैं अशक्त-समाप्त .NET के वर्तमान कार्यान्वयन में आंतरिक रूप से, लेकिन यह केवल इंटरॉप की खातिर है, ताकि कोड जो उम्मीद करता अशक्त-समाप्त तार ही दिया जा सकता है काम करने के लिए स्मृति का हिस्सा।

ध्यान दें कि इसे किसी भी क्षेत्र में रखने के प्रदर्शन के मामले में एक अच्छा विचार है - यह ओ (एन) के बजाय लंबाई ओ (1) ऑपरेशन को ढूंढता है।

+1

यादृच्छिक ऐतिहासिक एक तरफ: सी सम्मेलन काफी हद तक एक सुविधा थी ताकि आप सीधे स्ट्रिंग में पॉइंटर पास कर सकें और लम्बाई के साथ संरचना के बारे में चिंता न करें (जिसका अर्थ है बफर को संशोधित करते समय लंबाई को सिंक में रखना।) कुछ पास्कल कार्यान्वयन (जैसे डेल्फी) ने थोड़ा हैकर दृष्टिकोण लिया और स्ट्रिंग लंबाई को * (पीआरटी -4) स्थान पर संग्रहीत किया; यदि आपने मैन्युअल रूप से बफर को संशोधित किया है तो यह अपडेट करने का आपका काम था। चूंकि .NET स्ट्रिंग्स अपरिवर्तनीय हैं, यह अच्छी तरह से सिंक्रनाइज़ेशन समस्या को साइड-स्टेप करता है (जब तक आप बैकिंग मेमोरी को अशिष्टता से नहीं दबाते हैं।) –

+1

शायद उल्लेखनीय लायक है: _current कार्यान्वयन_ इसे स्टोर करता है .... –

+0

@ हेनक: हो गया, धन्यवाद। –

संबंधित मुद्दे