Hiệp phương sai và Đối nghịch là về việc hiểu Nguyên tắc là thừa kế.
Trong cả hai hiệp phương sai và hiệp phương sai, s.th. được "truyền theo", hoặc là giá trị trả về hoặc làm đối số cho phương thức ủy nhiệm. Đó là "thông qua cùng" đã được "bắt" trong một receptacle. Trong C# - hoặc thuật ngữ lập trình như vậy - chúng ta sử dụng từ từ cho cái mà tôi gọi là receptacle. Đôi khi bạn phải quay trở lại các từ khác để nắm bắt được ý nghĩa của các từ thuật ngữ thường được sử dụng.
Dù sao, nếu bạn hiểu được thừa kế, mà rất có khả năng bất kỳ người đọc nào ở đây sẽ, thì điều duy nhất cần chú ý là nơi chứa, i. e. xô được sử dụng để đánh bắt phải có cùng loại hoặc loại có nguồn gốc ít hơn loại được truyền - điều này đúng với cả hiệp phương sai và đối xứng.
Thừa kế nói rằng bạn có thể bắt chim trong một thùng động vật vì chim là một con vật. Vì vậy, nếu một tham số của một phương pháp có để bắt một con chim bạn có thể bắt nó trong một xô động vật (một tham số của loại động vật), mà sau đó là contravariance. Và nếu phương pháp của bạn, nghĩa là đại biểu của bạn trả về một con chim, thì "xô" cũng có thể là một loại chim hoặc ít có nguồn gốc (của một loại cha) có nghĩa là biến mà bạn bắt được giá trị trả về của phương thức phải là cùng một loại hoặc ít có nguồn gốc hơn giá trị trả lại.
Chỉ cần chuyển đổi suy nghĩ của bạn để phân biệt đối xử giữa cái đang được truyền đi và cái bắt được như sau đó tất cả sự phức tạp về hiệp phương sai và contravariance hòa tan độc đáo. Sau đó, bạn nhận ra rằng nguyên tắc tương tự là tại nơi làm việc. Nó chỉ là thừa kế không thể bị vi phạm vì nó chỉ chảy một chiều.
Và trình biên dịch rất thông minh khi bạn đúc thùng theo kiểu chuyên biệt hơn (một lần nữa, và khi cần) thì chỉ sau đó bạn sẽ có được tất cả các phương thức chuyên biệt được thêm vào lớp dẫn xuất. Đó là vẻ đẹp của nó. Vì vậy, nó là bắt, đúc và sử dụng những gì bạn có và có lẽ cần.
Amiteration allpleation luôn amuses – Bob
Tôi đã cố gắng trả lời các câu hỏi như vậy trong một bài đăng FAQ ngắn: http://blogs.msdn.com/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx Vẫn còn nhiều sự nhầm lẫn xung quanh tính năng này ... –