Thursday, November 9, 2017

C# For Beginners, Part 45( Difference between String & StringBuilder )

আজকে আমরা , String & StringBuilder নিয়ে কথা বলবো ।। আমরা সাধারণত , এতদিন  String  ব্যবহার করে এসেছি , কিন্তু --- আজ আমরা এটা মূলত মেমোরিতে কাজ করছে ?? সেটা নিয়ে কথা বলবো ।। তার আগে , চলো আমরা নিচের কোড দেখে আসি -------------------


using System;

namespace joy
{
    public class Program
    {
        public static void Main()

        {
            string joy = "c# ";
            joy += "Video ";
            joy += "Tutorial ";
            joy += "for ";
            joy += "beginners";
            Console.WriteLine(joy);
            Console.ReadKey();
        }

    }
   
}

আচ্ছা  এখানে আসলে কি হচ্ছে  ??  আমরা জানি  ,  string একটা ( sealed)  ক্লাস | আমরা যখন , string joy দিয়ে স্ট্রিং ক্লাসের একটা রেফারেন্স ভ্যারিয়েবল ক্রিয়েট করলাম ।। তারপর , সেটা একটা অব্জেক্টকে ( c# )  পয়েন্ট করে ।। তারপর , কনক্যাটিনেশন এর মাধ্যমে , এই  joy রেফারেন্স ভ্যারিয়েবল এর সাথে অন্য একটা অব্জেক্ট  ( Video) ক্রিয়েট করে ,সেটাকে পয়েন্ট করে দিয়েছি ।।
এভাবে , আমরা মোট এখানে পাচটা অব্জেক্ট ক্রিয়েট করেছি । । কিন্তু , কাজের কাজ কিন্তু সেই শেষের অব্জেক্টটাই , প্রথম চারটার কিন্তু আমাদের কোনো দরকার নেই , কিন্তু মেমোরিতে হিপ মেমোরিতে ঠিকই তা রয়ে গেছে , যে পর্যন্ত না গারবেজ কালেক্টর সেগুলোকে ক্লিন না করে । ।


তো , আমাদের এমন একটা ক্লাস  দরকার , যেটা নতুন নতুন অব্জেক্ট ক্রিয়েট না করে - একটা অব্জেক্টকেই পরিবর্তন করবে ।  এ কথাকেই ইংরেজীতে মিউটেবল (  Mutable ) বলা হয় , যার অর্থ পরিবরতনশীল । এর মানে , আমরা বুঝতে পারলাম যে - আমাদের স্ট্রিং অব্জেক্ট'টা  Mutable নয় , এক কথায় বলতে গেলে -  Immutable (  অপরিবরতনশীল ) ।।

তো চলো , আমরা নতুন একটা ক্লাস দেখি ,যেটা - Mutable । এরকম ক্লাস হলো , StringBuilder , চলো দেখে আসি --------------------------

using System;
using System.Text;

namespace joy
{
    public class Program
    {
        public static void Main()

        {
            StringBuilder   joy =new  StringBuilder("c# ");
            joy.Append( "Video ");
            joy .Append( "Tutorial ");
            joy.Append( "for ");
            joy.Append("beginners");
            Console.WriteLine(joy);
            Console.ReadKey();
        }

    }

এখানে , কি হচ্ছে ?? চলো একটু বুঝার ট্রাই করি  ।।   আমাদের এই ক্লাস , হিপ মেমোরিতে - নতুন নতুন করে অব্জেক্ট ক্রিয়েট করছে না ।   আমরা , প্রথমে যে অব্জেক্ট ক্রিয়েট করেছিলাম ( C# )   , সেটাকেই শুধু পরিবরতন করছে  ।।  একেবারে শেষে পরিবর্তন  হয়ে , (c# Video Tutorial for beginners ) হয়ে যায়  ।।  তবে এই ক্ষেত্রে , সিনট্যাক্সগত পরিবর্তনের দিকে আছে , শুধু  Append Method এর ব্যপার । কারণ , এই ক্ষেত্রে আমাদের আগেরটার মতো কনক্যাটিনেশন ইউজ করতে পারবো না ।।। এখানে , আমাদের  Append মেথোড ইউজ করতে হবে । ।

এই মেথোডটা মূলত আগের স্ট্রিং ক্লাসের মতো নতুন ইন্সট্যান্স ক্রিয়েট করে না , এটা একই ইন্সট্যান্স - এ নতুন স্ট্রিং'টা কপি করে চেইঞ্জ করে , যার কারণে শুধু শুধু নতুন নতুন অব্জেক্ট ক্রিয়েট করে না , একই ইন্সট্যান্স এর ভ্যালু বেড়ে যায় ও সাথে সাথে তার ক্যাপাসিটি'ও সময় অনুযায়ী বেড়ে যায় ।।

তো যাই হোক , তুমি বুঝতেই পারছো যে - এটা কতো গুরুত্বপূরণ ভুমিকা পালন করবে , যখন ---আমরা অনেকগুলো স্ট্রিং ম্যানিপিউলিশেন ইউজ করবো !! নিচের ছবিটা দেখে আরো কিছুটা ক্লিয়ার হবে বিষয়টা , আজ এইটুকুই !!! 




No comments:

Post a Comment