C # में, out
कीवर्ड को दो अलग-अलग तरीकों से उपयोग किया जा सकता है।
एक पैरामीटर संशोधक के रूप में जिसमें एक तर्क को संदर्भ द्वारा पारित किया जाता है
class OutExample { static void Method(out int i) { i = 44; } static void Main() { int value; Method(out value); // value is now 44 } }
सहसंयोजक निर्दिष्ट करने के लिए एक प्रकार के पैरामीटर संशोधक के रूप में ।
// Covariant interface. interface ICovariant<out R> { } // Extending covariant interface. interface IExtCovariant<out R> : ICovariant<R> { } // Implementing covariant interface. class Sample<R> : ICovariant<R> { } class Program { static void Test() { ICovariant<Object> iobj = new Sample<Object>(); ICovariant<String> istr = new Sample<String>(); // You can assign istr to iobj because // the ICovariant interface is covariant. iobj = istr; } }
मेरा सवाल है: क्यों?
एक शुरुआत के लिए, दोनों के बीच संबंध सहज नहीं लगता है । संदर्भ के साथ गुजरने से जेनेरिक के उपयोग का कोई लेना देना नहीं है।
मैंने पहली बार सीखा कि out
संदर्भ से तर्क पारित करने के संबंध में क्या था, और इसने जेनेरिक के साथ सहसंयोजक को परिभाषित करने के उपयोग की मेरी समझ को बाधित किया।
क्या इन उपयोगों के बीच कोई संबंध है जो मुझे याद आ रहा है?
System.Func<in T, out TResult>
प्रतिनिधि में सहसंयोजक और विरोधाभासी उपयोग को देखते हैं तो कनेक्शन थोड़ा और अधिक समझने योग्य है ।