ใน 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>