Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में कोवेरिएंस और कंट्रावेरिएंस (Covariance and Contravariance)


C# में कोवेरिएंस और कंट्रावेरिएंस जेनेरिक टाइप पैरामीटर्स के लिए अंतर्निहित (implicit) रूपांतरण सक्षम करते हैं, जिससे टाइप सेफ्टी बनी रहती है। ये एरे, डेलीगेट्स, और जेनेरिक इंटरफेस पर लागू होते हैं।

वर्ग पदानुक्रम

class One { }
class Two : One { }
class Three : Two { }

कोवेरिएंस (Covariance) - out कीवर्ड

एक बेस टाइप की अपेक्षा वाली जगह पर डेराइव्ड टाइप पास करना। "आउट" पोजीशन (रिटर्न टाइप) के लिए।

  • एरे: Two[] twoArr = new Three[10]; One[] oneArr = twoArr; (रनटाइम चेक के साथ)
  • डेलीगेट्स: Func<Two> f2 = ...; Func<One> f1 = f2;
  • इंटरफेस: IEnumerable<out T> - IEnumerable<Three> को IEnumerable<One> असाइन कर सकते हैं।

कंट्रावेरिएंस (Contravariance) - in कीवर्ड

एक डेराइव्ड टाइप की अपेक्षा वाले पैरामीटर के लिए बेस टाइप पास करना। "इन" पोजीशन (पैरामीटर) के लिए।

  • डेलीगेट्स: Action<One> a1 = ...; Action<Two> a2 = a1;
  • इंटरफेस: IComparer<in T>, Action<in T>।

मुख्य नियम

  • केवल रेफरेंस टाइप्स के लिए (वैल्यू टाइप्स के लिए नहीं)।
  • इंटरफेस/डेलीगेट परिभाषा में out (कोवेरिएंट) या in (कंट्रावेरिएंट) मार्क होना चाहिए।
  • क्लासेस वेरिएंट नहीं होतीं।
  1. - C# में बेस क्लास (Base Class) क्या है?

    परिचय बेस क्लास (आधार वर्ग) वह क्लास है जिससे दूसरी क्लास (डेराइव्ड क्लास) इनहेरिट करती है। डेराइव्ड क्लास बेस क्लास के सदस्यों (फ़ील्ड, मेथड, प्रॉपर्टी) को पुनः उपयोग/विस्तार कर सकती है। सिंटैक्स <access-specifier> class BaseClass { ... } class DerivedClass : BaseClass { ... } उदाहरण: Shap

  1. - Java में क्लास और स्टेटिक वेरिएबल्स

    परिचयक्लास वेरिएबल्स को स्टेटिक वेरिएबल्स के रूप में भी जाना जाता है, और उन्हें static कीवर्ड की मदद से एक मेथड के बाहर घोषित किया जाता है।स्टेटिक वेरिएबल वह है जो क्लास के सभी इंस्टेंस के लिए सामान्य है। वेरिएबल की एक सिंगल कॉपी सभी ऑब्जेक्ट्स के बीच साझा की जाती है।उदाहरणpublic class Demo{ sta

  1. - पायथन एक्सेप्शन बेस क्लासेस

    अन्य हाई-लेवल लैंग्वेजेज की तरह, पायथन में भी एक्सेप्शन्स होते हैं। जब कोई समस्या होती है, तो यह एक एक्सेप्शन उठाता है। ZeroDivisionError, AssertionError आदि जैसे विभिन्न प्रकार के एक्सेप्शन्स होते हैं। सभी एक्सेप्शन क्लासेस BaseException क्लास से डिराइव्ड होती हैं।कोड बिल्ट-इन एक्सेप्शन्स चला सकता