public void Foo (IEnumerable<object> objects)
{
}
var strings = new List<string>{"first", "second", "third"};
Foo(strings); // Compilation Error.
Foo(strings.Cast<object>()); // O.k.
答案 0 :(得分:4)
答案 1 :(得分:0)
因为它无法知道你想做什么。以下行无法编译的原因相同:
string s = new object();
强制对用户施加“不安全”类型转换会给编译器带来太大的自由。
答案 2 :(得分:0)
你不想抬头co-variance and contra-variance。
这是.NET 4.0中的新功能