Có thể đúc List<Subclass>
đến List<Superclass>
trong C# 4.0 không?hiệp phương sai trong C#
cái gì đó dọc những dòng này:
class joe : human {}
List<joe> joes = GetJoes();
List<human> humanJoes = joes;
Đó không phải là những gì hiệp phương sai là gì?
nếu bạn có thể làm:
human h = joe1 as human;
lý do tại sao bạn không nên có thể làm
List<human> humans = joes as List<human>;
hơn nó sẽ không được pháp luật để làm (joe) con người [0] vì đó mục đã được đúc xuống .. và tất cả mọi người sẽ được hạnh phúc. Bây giờ, cách duy nhất là tạo một Danh sách mới
Đây là cơ bản giống như [Trong C#, tại sao có thể không phải là một Danh sách đối tượng được lưu trữ trong một biến Danh sách
vì 'con người' sau đó sẽ đề cập đến một thể hiện của' Danh sách ', điều này sẽ gây ra các vấn đề như minh họa trong ví dụ của @ Jon. –
yep, sau khi chỉnh sửa ví dụ tôi đã hiểu nó .. có ý nghĩa –