महत्वपूर्ण!
अनुक्रमणिका i पर किसी स्ट्रिंग तत्व को एक्सेस करते समय, s[i] प्रकार string नहीं बल्कि char होता है। इसका मतलब है कि यह एक स्ट्रिंग नहीं है, बल्कि एक वर्ण है जो वर्ण कोड तालिका में कुछ पूर्णांक से मेल खाता है। विशेष रूप से, जब आप char  प्रकार के दो तत्व जोड़ते हैं, तो आपको एक पूर्णांक मिलता है - इन तत्वों के कोड का जोड़। हालाँकि, यदि आप s[i] प्रदर्शित करते हैं, तो स्ट्रिंग का i-वाँ वर्ण प्रदर्शित होगा, न कि उससे संबंधित संख्या। 

Strings. अवलोकन।

स्ट्रिंग एक विशिष्ट क्रम में वर्णों की एक सूची (या अनुक्रम) है। वर्णों के संपूर्ण अनुक्रम को एक ही वस्तु के रूप में माना जाता है।

एक अक्षर कुछ भी है जिसे आप कीबोर्ड पर सिंगल कीस्ट्रोक (अक्षर, संख्या, उल्टा) के साथ टाइप कर सकते हैं स्लैश या कोई अन्य चरित्र)।
स्ट्रिंग्स में स्पेस हो सकते हैं: "हैलो वर्ल्ड!"।
एक खाली स्ट्रिंग एक ऐसी स्ट्रिंग होती है जिसमें 0 अक्षर होते हैं।
सी शार्प हर उस चीज़ को स्ट्रिंग्स के रूप में स्वीकार करता है जो कोट्स ("") में लिखी जाती है, स्ट्रिंग string प्रकार की होती है।

याद रखना महत्वपूर्ण है: C# में तार अपरिवर्तनीय हैं।

आप इनपुट ऑपरेटर का उपयोग करके स्ट्रिंग में एक नया मान लिख सकते हैं:
<पूर्व> string s = Console.ReadLine(); आप वेरिएबल को एक स्ट्रिंग मान भी निर्दिष्ट कर सकते हैं, उदाहरण के लिए:< /अवधि > <पूर्व> string s = "C Sharp"; आप किसी स्ट्रिंग की लंबाई इस तरह परिभाषित कर सकते हैं: <पूर्व> int n = s.Length;


स्ट्रिंग तुलना। संख्याओं की तरह स्ट्रिंग्स की भी एक दूसरे से तुलना की जा सकती है। आप यह निर्धारित कर सकते हैं कि कौन सी रेखा अधिक है, कौन सी कम है।

स्ट्रिंग्स की तुलना करते समय, वर्ण कोड की तुलना की जाती है। वर्ण एन्कोडिंग के दर्जनों, यदि सैकड़ों नहीं हैं। इस अवधारणा को समझने का सबसे आसान तरीका सबसे आसान ASCII में से एक को समझना है (आप इसके बारे में यहां< पढ़ सकते हैं< /ए>) . 
यह समझना आवश्यक है कि आधुनिक एनकोडिंग में रूसी और अंग्रेजी दोनों अक्षरों को वर्णानुक्रम में व्यवस्थित किया जाता है, संख्याएं भी छोटे से बड़े की ओर जाती हैं। 
उदाहरण के लिए, ASCII कोड तालिका में, अंग्रेजी अक्षर 'A' - 65, अक्षर 'क' - 97, अंक '0' कोड 48 है। रूसी अक्षर ASCII कोड तालिका (128 से 255 तक की संख्या) के विस्तारित भाग में स्थित हैं। बड़े अक्षर छोटे अक्षरों से पहले आते हैं (अर्थात उनका कोड छोटा होता है)।
उपयोग की जाने वाली अधिकांश एन्कोडिंग तालिकाओं में, पैटर्न समान होते हैं, लोअरकेस अक्षर अपरकेस अक्षरों की तुलना में बाद में होते हैं, संख्याएँ अक्षरों की तुलना में पहले होती हैं, और रूसी अक्षर अंग्रेज़ी की तुलना में बाद में होते हैं।
वर्णों या स्ट्रिंग्स की तुलना करते समय, C# वर्णों को उनके संबंधित क्रमिक मानों में परिवर्तित करता है और फिर बाएं से दाएं की तुलना करता है। 

उदाहरण के लिए: <कोड> "लोकोमोटिव" < "स्टीमबोट", क्योंकि शब्द पांचवें अक्षर और "इन" में भिन्न हैं < "एक्स".

एक स्ट्रिंग में प्रवेश करते समय, आप इसे किसी भी विभाजक द्वारा तुरंत भागों में विभाजित कर सकते हैं।
हमने ऐसा पहले भी किया है जब हमने एक ही लाइन पर कई संख्यात्मक चर दर्ज किए थे। हमने स्ट्रिंग को भागों में विभाजित करने के लिए Sप्लिट() विधि का उपयोग किया था। डिफ़ॉल्ट रूप से, यह स्पेस के अनुसार स्ट्रिंग्स को सबस्ट्रिंग्स में अलग करता है।
इस पद्धति का उपयोग करके, आप स्ट्रिंग को भागों में विभाजित कर सकते हैं, उदाहरण के लिए, रिक्त स्थान द्वारा। और स्ट्रिंग के प्रत्येक भाग को एक अलग वेरिएबल में लिखें।
उदाहरण: <पूर्व> स्ट्रिंग [] एस = कंसोल। रीडलाइन ()। स्प्लिट (); उदाहरण में, जब दो शब्दों को एक स्थान से अलग करते हुए दर्ज किया जाता है, तो पहला शब्द s[0] सरणी के शून्य तत्व में संग्रहीत होता है, दूसरा - दूसरे s[1] में।

यदि आपको विभाजक के रूप में कई वर्णों का उपयोग करने की आवश्यकता है, तो आप उन्हें अल्पविराम से अलग करके निर्दिष्ट कर सकते हैं:
  <पूर्व> स्ट्रिंग [] एस = कंसोल। रीडलाइन ()। स्प्लिट (नया [] { ' ', '\n' });  यदि इनपुट स्ट्रिंग में लगातार कई स्थान हो सकते हैं, तो अंतिम सरणी में रिक्त स्थान भी दिखाई दे सकते हैं, इसे बाहर करने के लिए, आपको एक पैरामीटर जोड़ने की आवश्यकता है: <पूर्व> स्ट्रिंग [] एस = कंसोल। यदि आपको सबस्ट्रिंग सीमांकक का उपयोग करने की आवश्यकता है: <पूर्व> स्ट्रिंग [] एस = कंसोल। रीडलाइन ()। स्प्लिट (नया [] { "\\ r \\ n", "\ r", "\ n", ""}, स्ट्रिंगस्प्लिटऑप्शन।

स्ट्रिंग्स को "+" चिह्न का उपयोग करके एक साथ जोड़ा जा सकता है। इस ऑपरेशन को स्ट्रिंग संयोजन या संयोजन कहा जाता है। 
उदाहरण के लिए,  <पूर्व> स्ट्रिंग एस = "हाय,"; स्ट्रिंग एस 1 = "दुनिया"; कंसोल.राइटलाइन(s + s1); स्क्रीन "हैलो वर्ल्ड" (उद्धरण चिह्नों के बिना)।
 

पंक्ति सूचकांकों को संदर्भित करना
एक स्ट्रिंग में प्रत्येक वर्ण की एक संख्या होती है (जिसे अनुक्रमणिका कहा जाता है), और C# प्रोग्रामिंग भाषा में अनुक्रमण शून्य से शुरू होता है। यानी, पहले वर्ण की अनुक्रमणिका 0 है, दूसरे वर्ण की - 1, और इसी तरह आगे भी।
स्ट्रिंग वर्णों को अनुक्रमणिकाओं द्वारा एक्सेस किया जा सकता है, जो वर्ग कोष्ठक s[i] में दर्शाए गए हैं।
 
उदाहरण 
<टेबल क्लास = "टेबल-बॉर्डर्ड टेबल-लिस्ट-टेस्ट टेबल-एसएम टेबल-स्ट्राइप्ड"> <शरीर>
स्ट्रिंग एस एच l l
इंडेक्स S[0] S[1] S[2] S[3] S[4]
चूँकि एक वर्ण को अनुक्रमणिका द्वारा एक्सेस किया जा सकता है, एक चर लूप का उपयोग सभी वर्णों पर पुनरावृति करने के लिए किया जा सकता है , जो संभावित सूचकांक मान लेगा। उदाहरण के लिए, एक प्रोग्राम जो स्ट्रिंग s के सभी वर्ण कोड प्रदर्शित करता है, वह ऐसा दिखाई देगा: <पूर्व> for (int i = 0; i < s.Length; i++) {   कंसोल। राइटलाइन (एस [i]); कंसोल। राइटलाइन (कन्वर्ट। ToInt32 (s [i])); } प्रोग्राम नोट्स:
1) s.Length एक स्ट्रिंग की लंबाई का पता लगाता है। पहले वर्ण की अनुक्रमणिका 0 है और अंतिम की अनुक्रमणिका s.Length-1 है। लूप वेरिएबल i केवल 0 से  > s.Length
<कोड>-1;
2) प्रत्येक पंक्ति में, प्रतीक स्वयं पहले प्रदर्शित होगा, और फिर उसका कोड, जिसे  Convert.ToInt32();
विधि के माध्यम से प्राप्त किया जा सकता है
एक ही गणना को छोटा लिखा जा सकता है:


foreach (char c in s)

    Console.WriteLine(c);
    Console.WriteLine(Convert.ToInt32(c));
}
<पूर्व> इस स्निपेट में, लूप हेडर सभी s में लूप करता है वर्ण, एक-एक करके चर c में रखकर। ">
स्ट्रिंग्स के साथ काम करते समय C# की ख़ासियत यह है कि स्ट्रिंग्स अपरिवर्तनीय वस्तुएं हैं। दूसरे शब्दों में, हम किसी स्ट्रिंग के अलग-अलग वर्णों को नहीं बदल सकते हैं।
उदाहरण के लिए, निम्न कथन काम नहीं करेगा:
<पूर्व> s[5]=" ";