private static void TestStructInterface()
{
IFoo foo1 = new FooClass(); // works
IFoo foo2 = new FooStruct(); // works
IEnumerable<IFoo> foos1 = new List<FooClass>(); // works
IEnumerable<IFoo> foos2 = new List<FooStruct>(); // compiler error
}
interface IFoo
{
string Thing { get; set; }
}
class FooClass : IFoo
{
public string Thing { get; set; }
}
struct FooStruct : IFoo
{
public string Thing { get; set; }
}
Компилятор жалуется:
Невозможно неявно преобразовать тип 'System.Collections.Generic.List < Tests.Program.FooStruct > ' к 'System.Collections.Generic.IEnumerable < Tests.Program.IFoo > '. Явное преобразование существует (вы пропускаете листинг?)
Почему?
Почему существует различие между классами и структурами?
Любые обходные пути?