我在C#中有以下示例代码,它不符合我的预期。我的期望是派生类型被隐式转换为较少的派生类型,结果是array scenario code
而不是generic collections scenario code
。
由于字符串类型是由C#隐式转换为对象类型的,因此下面的代码应该适用于两种情况但不适用。
我将数组或字符串集合分配给下面代码中的数组或对象集合。
问题: 为什么泛型集合在下面的代码中的行为不像数组?
此代码的jsfiddle位于C# code for this question
C#代码
//arrays scenario
object[] objs = new object[3];
string[] strs = new string[] {"a","b","c"};
objs = strs;//THIS WORKS
//Generic collections scenario
List<object> objects = new List<object>();
List<string> strings = new List<string>{"a","b","c"};
objects = strings; //BUT this does not work