Say, ví dụ, tôi có một lớp:Tại sao một chức năng mất IEnumerable <interface> không chấp nhận IEnumerable <class>?
public class MyFoo : IMyBar
{
...
}
Sau đó, tôi muốn sử dụng đoạn mã sau:
List<MyFoo> classList = new List<MyFoo>();
classList.Add(new MyFoo(1));
classList.Add(new MyFoo(2));
classList.Add(new MyFoo(3));
List<IMyBar> interfaceList = new List<IMyBar>(classList);
Nhưng điều này tạo ra lỗi:
`Argument '1': cannot convert from 'IEnumerable<MyFoo>' to 'IEnumerable<IMyBar>'
Tại sao điều này? Kể từ khi MyFoo thực hiện IMyBar, người ta sẽ mong đợi rằng một IEnumerable của MyFoo có thể được coi như một IEnumerable của IMyBar. Một ví dụ thực tế trần tục đang sản xuất một danh sách những chiếc xe, và sau đó được cho biết rằng nó không phải là một danh sách các loại xe.
Nó chỉ là một ít phiền toái, nhưng nếu ai cũng có thể làm sáng tỏ điều này, tôi sẽ có nhiều nghĩa vụ.
Câu trả lời bạn sau cũng được đề cập trong câu hỏi này: http://stackoverflow.com/questions/2346763/any-simple-way-to- giải thích-tại sao-i-không-do-listanimal-động vật-new-arraylistdo/2346857 # 2346857 –
Vâng cảm ơn - Tôi thấy rằng trong danh sách 'liên quan' một khi tôi đã đăng câu hỏi, nhưng nó không xuất hiện trong khi Tôi đã viết nó ... –