C# Immutable String: System.String Object की एक विशेषता ये है कि जब हम किसी String Literal को किसी String Object में एक बार Initialize कर देते हैं, तो फिर पूरे Program के दौरान इस Initialized String को Change नहीं किया जा सकता।
बल्कि जब भी हम किसी String Method को किसी String Object पर Apply करते हैं और वह Method फिर से कोई String Object Return करता है, तो Return होने वाला String Object, एक बिल्कुल नया String Object होता है।
इसी तरह से जब हम किसी String Object को Initialize करने के बाद Assignment Operator का प्रयोग करके उसी String Object को नया String Assign करते हैं, तो वह String उसी String Object में Store नहीं होताए बल्कि Memory में एक नया String Object Create होता है और उस नए String Object का Memory Address ही पिछले String Reference को Assign होता है।
इसलिए जब भी कभी हम .NET Framework का प्रयोग करते हुए कोई ऐसा Application Create करते हैं, जिसमें बहुत ज्यादा String Manipulation हो रहा होता है, तब हम System.String Class के Object का प्रयोग नहीं करते।
बल्कि .NET Framework हमें String Manipulation से सम्बंधित जरूरतों को पूरा करने के लिए System.Text.StringBuilder नाम की एक ज्यादा उपयुक्त Class Provide करता है, जिसमें Append(), AppendFormat(), AppendLine(), Clear(), CopyTo(), EnsureCapacity(), Equals(), Insert(), Remove(), Replace() व ToString() नाम के बहुत सारे Overloaded Methods व Capacity, Length तथा MaxCapacity नाम की Properties को Define किया गया है।
चूंकि StringBuilder Type को System.Text Namespace में Define किया गया है, इसलिए जब भी हम अपने Application में इस Class को Use करते हैं, हमें System.Text Namespace को अपने Program में using Keyword का प्रयोग करते हुए Include करना जरूरी होता है।
इस Class के Objects की विशेषता ये है कि जब हम इस Class के Object में Stored Strings को विभिन्न Methods को Use करके Modify करते हैं, तो वास्तव में Current Object में Stored String के Internal Character Data में ही परिवर्तन होता है। इसलिए इस Class के String Objects ज्यादा Memory Efficient तरीके से Text Data के साथ Interaction करते हैं।
StringBuilder Type का Object Create करने के लिए हमें StringBuilder() Constructor का प्रयोग करना होता है। इस Class में StringBuilder() Constructor को भी कई तरह का Argument Accept करने के लिए Overload किया गया है। इस Class को हम निम्नानुसार तरीके से Use कर सकते हैं:
// File Name: StringBuilderClass.cs using System; using System.Text; namespace CSharpFundamentals { class StringBuilderClass { private static void Main(string[] args) { StringBuilder msg = new StringBuilder("C# is COOL "); Console.WriteLine("Normal String: {0}", msg); msg.Append(" and easy to learn"); Console.WriteLine("After appending: {0}.", msg); msg.Replace("C#", "Java"); Console.WriteLine("After replacing: {0}.", msg); msg.Insert(0, "Do you think, "); Console.WriteLine("After inserting: {0}?", msg); } } } // Output: Normal String: C# is COOL After appending: C# is COOL and easy to learn. After replacing: Java is COOL and easy to learn. After inserting: Do you think, Java is COOL and easy to learn?
इस Program में सबसे पहले हमने StringBuilder() Constructor का प्रयोग करते हुए msg नाम का एक नया Object Create करके उसमें “C# is COOL” String को Initialize किया है और अगले Statement द्वारा उस Newly Created Object की String को Output में Display किया है।
फिर जैसाकि उपरोक्त Program के Output द्वारा हम समझ सकते हैं कि जब उपरोक्त Program का निम्न Code Statement Execute होता है:
msg.Append(” and easy to learn”);
Console.WriteLine(“After appending: {0}.”, msg);
तो msg Object में Stored String में ही एक नया String Append हो जाता है और हमें निम्नानुसार Output प्राप्त होता है:
After appending: C# is COOL and easy to learn.
इसी तरह से जब निम्न Statement Pair Execute होता है:
msg.Replace(“C#”, “Java”);
Console.WriteLine(“After replacing: {0}.”, msg);
तो msg Object में Stored String में स्थित “C#” Sub-String, एक नई String “Java” से Replace हो जाता है और हमें निम्नानुसार Output प्राप्त होता है:
After replacing: Java is COOL and easy to learn.
जबकि अन्त में निम्न Statements का Execution होता है:
msg.Insert(0, “Do you think, “);
Console.WriteLine(“After inserting: {0}?”, msg);
और Output के रूप में फिर से msg Object में Stored String Modify होकर निम्नानुसार Display होता है:
After inserting: Do you think, Java is COOL and easy to learn?
इसी तरह से इस Class में Length नाम की एक Property है, जिसका प्रयोग करके हम इस बात का पता लगा सकते हैं कि Currently किसी StringBuilder Object में कुल कितने Characters Stored हैं।
Default रूप से StringBuilder Class का Object केवल 16 Characters तक की String को ही Hold कर सकता है। लेकिन यदि StringBuilder Object Create करते समय हम Create होने वाले Object में 16 से ज्यादा Characters Initialize करें, तो .NET Framework Automatically Extra Characters के लिए Memory Allocate कर लेता है।
इसी तरह से यदि हम चाहें तो अपनी जरूरत के अनुसार अधिकतम Store हो सकने वाले Characters की संख्या यानी Buffer की Size को StringBuilder() Constructor में दूसरे Argument की तरह निम्नानुसार Specify कर सकते हैं:
StringBuilder msg = new StringBuilder(“C# is COOL “, 100);
यदि हम इस तरह से StringBuilder() Constructor को Use करें, तो Create होने वाला msg Object अधिकतम 100 Characters के लिए Memory Buffer Allocate करेगा। (C# Immutable String)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C#.NET in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C#.NET in Hindi | Page:908 | Format: PDF