为什么新的[] {AnonymousType,AnonymousType}不能被转换为IEnumerable?

Sha*_*bie 1 c# anonymous-types

我有一个匿名类型的数组声明为:

var list = new[] 
{
    new {Name = "A", Age = 10},
    new {Name = "B", Age = 15}
}
Run Code Online (Sandbox Code Playgroud)

现在列表继承自Array类型,它实现了IEnumerable.为什么以下失败:

Convert.ChangeType(list, typeof(IEnumerable));
Run Code Online (Sandbox Code Playgroud)

这也失败了:

Convert.ChangeType(list, typeof(Array));
Run Code Online (Sandbox Code Playgroud)

亲切的问候,

Nad*_*zie 9

Convert.ChangeType方法需要实现IConvertible- 基本上是如何从源类型转换为目标类型的声明. System.Array没有实现IConvertible接口.

你要做的是从一种类型转换到另一种类型,并且(IEnumerable)list运行得非常好.

编辑:

正如Jon所说,这里的演员是隐式的,所以对IEnumerable的简单赋值(即隐式转换)也有效.