Trong C #, out
từ khóa có thể được sử dụng theo hai cách khác nhau.
Là một công cụ sửa đổi tham số trong đó một đối số được truyền bằng tham chiếu
class OutExample { static void Method(out int i) { i = 44; } static void Main() { int value; Method(out value); // value is now 44 } }
Là một sửa đổi tham số loại để xác định hiệp phương sai .
// 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; } }
Câu hỏi của tôi là: tại sao?
Đối với người mới bắt đầu, kết nối giữa hai người dường như không trực quan . Việc sử dụng với thuốc generic dường như không liên quan gì đến việc chuyển qua tham chiếu.
Trước tiên tôi đã học được những gì out
liên quan đến việc truyền các đối số bằng cách tham chiếu và điều này cản trở sự hiểu biết của tôi về việc sử dụng xác định hiệp phương sai với tổng quát.
Có một kết nối giữa những sử dụng mà tôi đang thiếu?
System.Func<in T, out TResult>
ủy nhiệm .