টপিকঃ জেনেরিকস কি এবং কেন?

জেনেরিকস একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ এর একটি অসাধারন ফিচার। সি শার্প ২..০ তে তা যুক্ত করা হয়েছে যার ফলে এই প্রোগ্রামিং ল্যাঙ্গুয়েজটি আর পরিপূর্ন হয়েছে।

জেনেরিকস কি?
এককথায় জেনেরিকস হল প্যারামিটারইজড টাইপ যা পরিবর্তনযোগ্য। অর্থ্যাৎ প্রোগ্রামের প্রয়োজনে যে কোন মেথড ক্লাশ বা ইন্টারফেস এর টাইপ পরিবর্তন করা যায়।  আর সহজ ভাবে বললে আমরা মেথডে যে রির্টান টাইপ ব্যবহার করি তার টাইপ আমরা জেনেরিক এর মাধ্যমে পরিবর্তন করতে পারি।

জেনেরিকস কেন?
মজার কথা হল জেনেরিকস এর একটি বিকল্প আছে। আর তা হল object  কীওয়ার্ড। object কীওয়ার্ড দ্বারা আমরা ভেরিয়েবল বা মেথড কে যেকোন টাইপে রাখতে পারি। কিন্তু এর প্রধান যে সীমাবদ্ধতা তা হল এতে কাস্ট করার দরকার হয়।(যে প্রক্রিয়ার ডাটা টাইপ পরিবর্তন করা হয় তাই হল কাস্ট যেমন ফ্লোট পয়েন্ট ডাটাকে ইন্টিজার এ কাস্ট করা হয় :int x=(int)2.44; এভাবে। )
কিন্তু জেনেরিকস কাস্ট করার কোন দরকার নেই। আর কিছু অসাধারন সুবিধা আছে এতে যেমন:
১. টাইপ সেইফটি(Type safety)
২. কোড পুনরার ব্যবহারযোগ্যতা বৃদ্ধি।
৩. যে কোন ক্লাস ইন্টারফেস ডেলিগেট বা মেথডে সমান ভাবে ব্যাবহার যোগ্য
৪. সি শার্প লাইব্রেরী অনেক গুলো বিল্ট ইন্‌ ক্লাশ মেথড পাওয়া যায় যেমন List<>.

সিনট্যাক্স এবং উদাহরন:

এর সিনট্যাক্স টা এরকম

//For Interfaces
interface IComparable <T>
//for structs
struct HashBucket <K,D>
//for methods
static void Reverse <T> (T[] arr)
//for delegates
delegate void Action <T> (T arg) 

এবার একটি উদাহরন দেখি:

class Sample {
    public static void Main() {
        int[] array = { 0, 1, 2, 3 };
        MakeAtLeast<int>(array, 2); // Change array to { 2, 2, 2, 3 }
        foreach (int i in array)
            Console.WriteLine(i); // Print results.
        Console.ReadKey(true);
    }
 
    public static void MakeAtLeast<T>(T[] list, T lowest) where T : IComparable<T> {
        for (int i = 0; i < list.Length; i++)
            if (list[i].CompareTo(lowest) < 0)
                list[i] = lowest;
    }
}

এখানে MakeAtLeast<T> একটি জেনেরিক মেথড যার কাজ হল এরের মধ্যে lowest ভেল্যুটি খুজে বের করা। IComparable<T> একটি জেনেরিক ইন্টারফেস।

কোডটি উইকিপিডিয়া থেকে নেয়া হয়েছে।
জেনেরিক সর্ম্পকে আর জানুন:
http://www.codeguru.com/csharp/sample_c … php/c11637
http://www.developer.com/net/net/articl … nerics.htm
;)Good Lak

তুমি যা চাও তা পাবে। শুধু চাওয়ার মত চাইতে হবে। তাই চাওয়ার ডেফিনেশন তা জেনে নিও।

লেখাটি GPL v3 এর অধীনে প্রকাশিত

Re: জেনেরিকস কি এবং কেন?

ভাই, কত আগে পোস্ট দিয়েছেন, আর আজকে আমার কাজে লাগছে, অনেক অনেক ধন্যবাদ smile

চঞ্চলও মন আমার
শোনেনা কথা !!!!

Re: জেনেরিকস কি এবং কেন?

thanks আমি এটা জাভা তে ঠিক মত বুঝে উঠতে পারছেলাম না । smile

Raihan Tusher