假设您有以下课程:
class Car : IPainting
{
...
}
Run Code Online (Sandbox Code Playgroud)
然后像这样的函数:
void AddCars(IEnumerable<Car> collection)
Run Code Online (Sandbox Code Playgroud)
然后像这样的代码片段:
Car bmw = new Car();
Car mercedes = new Car();
IPainting a = (IPainting) bmw;
IPainting b = (IPainting) mercedes;
IPainting[] paintings = new IPainting[] {a, b};
AddCars(paintings); // fails to compile
Run Code Online (Sandbox Code Playgroud)
这当然不能编译,因为AddCars()方法只接受Cars的集合,但它是'painting'数组的组成部分.
我知道C#4.0可能会为此提供解决方案.今天有没有解决方法呢?
谢谢,
阿尔贝托