কোভ্যারিয়েন্স এবং কন্ট্রাভ্যারিয়েন্স জেনেরিক টাইপ প্যারামিটারের সাথে ইনহেরিটেন্স সম্পর্ক বোঝাতে ব্যবহৃত হয়।
- কোভ্যারিয়েন্স (out T): একটি বেস টাইপ আশা করা জায়গায় ডেরাইভড টাইপ পাস করার অনুমতি দেয়। অ্যারে, ডেলিগেট, ইন্টারফেসে প্রয়োগ হয়।
- কন্ট্রাভ্যারিয়েন্স (in T): একটি ডেরাইভড টাইপ আশা করা জায়গায় বেস টাইপ পাস করার অনুমতি দেয়। মূলত মেথড প্যারামিটারে প্রয়োগ হয়।
উদাহরণ
class One { }
class Two : One { }
class Three : Two { }
// কোভ্যারিয়েন্স: বেস টাইপের জায়গায় ডেরাইভড টাইপ
IEnumerable list = new List(); // বৈধ যদি IEnumerable হয়
// কন্ট্রাভ্যারিয়েন্স: ডেরাইভড টাইপের জায়গায় বেস টাইপ
Action action = (Two t) => { }; // বৈধ যদি Action হয়
C#-এ ডেলিগেট এবং ইন্টারফেসে out এবং in কীওয়ার্ড ব্যবহার করে ভ্যারিয়েন্স নির্দিষ্ট করা যায়।