为什么在实现是结构时将.NET列表转换为IEnumerable <interface>会失败?

时间:2016-07-08 10:31:27

标签: c# .net boxing

IMyInterface的实现是一个结构时,有人可以解释为什么下面的转换会失败吗?我不明白为什么运行时关心类和结构之间的区别,因为List总是一个类。

public interface IMyInterface
{
}

public class MyClass : IMyInterface
{
}

public struct MyStruct : IMyInterface
{
}

public static void TestCast<T>()
    where T : IMyInterface
{
    var works = (IEnumerable<IMyInterface>)new List<MyClass>();
    var invalidCastException = (IEnumerable<IMyInterface>)new List<MyStruct>();
}

0 个答案:

没有答案