小编Dar*_*xel的帖子

从List <T>到IEnumerable <T>的InvalidCastException仅在3.5中

如果我打电话给那个

var list = new List<Class1>();
Test((IEnumerable<Interface1>)list);
Run Code Online (Sandbox Code Playgroud)

public interface Interface1
{

}

public static void Test(IEnumerable<Interface1> test)
{

}

public class Class1 : Interface1
{

}
Run Code Online (Sandbox Code Playgroud)

我得到了一个带有3.5框架的InvalidCastException,但在4和4.5中它没问题.我不明白为什么,都有IEnumerable

如果我检查3.5和4.5中的列表,我看不出为什么我得到InvalidCastException

4.5:

public class List<T> : IList<T>, ICollection<T>, 
    IEnumerable<T>, IEnumerable, IList, ICollection, IReadOnlyList<T>, IReadOnlyCollection<T>
Run Code Online (Sandbox Code Playgroud)

3.5:

public class List<T> : IList<T>, ICollection<T>, 
    IEnumerable<T>, IList, ICollection, IEnumerable
Run Code Online (Sandbox Code Playgroud)

.net c# casting exception

4
推荐指数
1
解决办法
452
查看次数

标签 统计

.net ×1

c# ×1

casting ×1

exception ×1