জেনেরিক্স আমাদের একটি ক্লাস ডিফাইন করতে দেয় এর ফিল্ডস, মেথডস, প্যারামিটারস ইত্যাদির টাইপের জন্য প্লেসহোল্ডার দিয়ে। জেনেরিক্স কম্পাইল টাইমে এই প্লেসহোল্ডারগুলোকে কোনো স্পেসিফিক টাইপ দিয়ে রিপ্লেস করে। একটি জেনেরিক অ্যাঙ্গেল ব্র্যাকেট `<>` দিয়ে ডিফাইন করা হয়। কালেকশনসের একটি প্রাইমারি লিমিটেশন হলো ইফেক্টিভ টাইপ চেকিং-এর অনুপস্থিতি। এর মানে আপনি একটি কালেকশনে যেকোনো অবজেক্ট রাখতে পারেন কারণ C# প্রোগ্রামিং ল্যাঙ্গুয়েজের সব ক্লাস `object` বেস ক্লাস থেকে এক্সটেন্ড করে।
এছাড়া, আমরা একটি জেনেরিক মেথড থেকে নরমাল মেথডের মত সিম্পলি `null` রিটার্ন করতে পারি না। নিচে সে এরর দেওয়া হলো যা একটি জেনেরিক মেথড থ্রো করবে যদি আমরা `null` রিটার্ন করার চেষ্টা করি।
using System;
namespace DemoApplication
{
class Program
{
public static void Main()
{
Add(5, 5);
}
public static T Add(T parameter1, T parameter2)
{
return null; // Compile error
}
}
}

তাই, একটি জেনেরিক মেথড থেকে `null` বা ডিফল্ট ভ্যালু রিটার্ন করতে আমরা `default()` ব্যবহার করতে পারি। `default(T)` প্রদান করা টাইপের ডিফল্ট অবজেক্ট রিটার্ন করবে।
উদাহরণ
using System;
namespace DemoApplication
{
class Program
{
public static void Main()
{
Add(5, 5);
Console.ReadLine();
}
public static T Add(T parameter1, T parameter2)
{
var defaultVal = default(T);
Console.WriteLine(defaultVal);
return defaultVal;
}
}
}
আউটপুট
0
এখানে আমরা দেখতে পাচ্ছি যে ইন্টিজারের ডিফল্ট ভ্যালু ০ রিটার্ন হয়েছে।