Thursday, November 9, 2017

C# For Beginners Part-42 ( Overriding ToString() method )

আজকে আমরা খুব ছোট্ট একটা বিষয় নিয়ে কথা বলবো , সেটা হলো --- ToString() মেথোড নিয়ে      ।।      এটা ইউজ করবো , এবং এই মেথোডকে ওভাররাইড করবো ।।
প্রথমে খুব সহজ একটা প্রোগ্রাম আমরা , এই মেথোড ইউজ করে করবো , নরমাল একটা সংখ্যাকে স্ট্রিং-এ কনভার্ট করে প্রিন্ট করবো , চলো ----


 public class Program
    {
        public static void Main()
        {
            int a = 10;
            Console.WriteLine(a.ToString());
            Console.ReadKey();
        }
    }

এখন আমরা একটা ক্লাস ক্রিয়েট করে , তার প্রোপারটিকে এই মেথোড দিয়ে ইউজ করার ট্রাই করবো , চলো দেখে আসি ।। 
using System;

namespace joy
{
    public class Program
    {
        public static void Main()
        {
            Customer c = new Customer();
            c.FirstName = "Nayeem";
            c.LastName = "Shahriar";
            Console.WriteLine(c.ToString());
            Console.ReadKey();
        }
    }
    public class Customer
    {
        public string FirstName { get; set; }
        public string LastName { set; get; }
    }
}

আমরা একটা নেইমস্পেইস এর ভেতরে , দুইটা ক্লাস ক্রিয়েট করেছি , নতুন ক্লাসের দুইটা প্রোপার্টি রয়েছে ।। যেটাকে , আমি সেট করলাম মেইন ফাংশনে -এবং শুধু সেই রেফারেন্স ভ্যারিয়েবল  c কে যদি উল্লেখ করি , তাহলে তোমায় আউটপুট-এ তোমার ক্লাসের   নেইমস্পেইস.ক্লাসনেইম  শো করবে ।। এটা অবাক হবার কিছু নেই , এটা ডট নেট ফ্রেইমওয়ারক থেকে ডিফল্টভাবেই  ToString() নামক ভারচুয়াল মেথোডের ইমপ্লিমেন্টেশন করা আছে , এই কারণে এরকম শো করবে ।। এখন ঘটনা হলো , একটা কথা আমরা জেনে গেছি - আর সেটা হলো ---  ToString() একটা ভারচুয়াল মেথোড ।।

সো , বুঝতেই পারছো যে -- আমরা একটু মুন্সিয়ানা করলেই এই মেথোডকে ওভাররাইড করতে পারি ।। তো চলো , আমরা একটু বুদ্ধি খাটিয়েই আসি ---
using System;

using System.Collections.Generic;

namespace joy
{
    public class Program
    {
        public static void Main()
        {
            Customer c = new Customer();
            c.FirstName = "Nayeem";
            c.LastName = "Shahriar";
            Console.WriteLine(c.ToString());
            Console.ReadKey();
        }
    }
    public class Customer
    {
        public string FirstName { get; set; }
        public string LastName { set; get; }

        public override string ToString()
        {
            return this.FirstName +" "+this.LastName ;
        }
    }
}

এখন দেখো , আমরা কিভাবে ??? একটা মেথোডকে ওভাররাইড করলাম ??আমরা সেই রেফারেন্স ভ্যারিয়েবল c কেই ইউজ করেছি  বাট ডিফল্ট এর বদলে নিজে মেথোডকে ওভাররাইড করেছি ।।।  এখন প্রশ্ন হলো ?? শুধু শুধু আমরা ওভাররাইড করতে গেলাম কেনো ?? আর আমাদের Customer নামক ক্লাসের প্রোপারটি দুটিও তো স্ট্রিং-এই দেয়া আছে , তাই নতুন করেই আবার - ToString() মেথোড ইউজ করলাম কেনো ??? আর এই ওভাররাইড ছাড়াও তো আমি দুইটা প্রোপার্টি ইউজ করতে পারবো । চলো এইসব মেথোড আর ওভাররাইড ছাড়াই আমরা দেখে আসি ----

using System;

using System.Collections.Generic;

namespace joy
{
    public class Program
    {
        public static void Main()
        {
            Customer c = new Customer();
            c.FirstName = "Nayeem";
            c.LastName = "Shahriar";
            Console.WriteLine(c.FirstName+ " " +c.LastName);
            Console.ReadKey();
        }
    }
    public class Customer
    {
        public string FirstName { get; set; }
        public string LastName { set; get; }

    }
}

তো আমরা দেখতেই পাচ্ছি যে - কত্ত সহজেই আমরা বিষয়টি করতে পারলাম , তাই না ?? তারপরো , আমরা উপরের মতো এতো জটিল করে কেনো করলাম ?? কেনো ওভাররাইডিং করলাম ।।
এখানে , বেশ কিছু বিষয় আছে , আমাদের যদি কখনো প্রয়োজন হয় , সামনে যে --  ToString() মেথোডকে ওভাররাইড করতে হবে ।। তাহলে কিন্তু আমাদের বিষয়টি জানা থাকলো , খুব সহজেই আমরা করতে পারবো ।। এ ছাড়াও , আরো প্রয়োজনীয়তা সামনেই তুমি নিজেই বুঝতে পারবে আশা করি , আজ এইটুকুই ।।


No comments:

Post a Comment