c#里面的泛型协变不懂
using System;
namespace test
{
class Animal { public string Name;}
class Dog : Animal { }
interface IMyIfc<out T>
{
T GetFirst();
}
class SimpleReturn<T> : IMyIfc<T>
{
public T[] itmes = new T[2];
public T GetFirst() { return items[0]; }
}
class Program
{
static void Dosomething(IMyIfc<Animal> returner)
{
Console.WriteLine(returner.GetFirst().Name);
}
static void Main()
{
SimpleReturn<Dog> dogReturner = new SimpleReturn<Dog>();
dogReturner.items[0] = new Dog() { Name = "Avonlea" };
IMyIfc<Animal> animalReturner = dogReturner;
Dosomething(dogReturner);
Console.ReadKey();
}
}
}
items这里有错误,请教一下错在哪里,是缺少using吗?
IMyIfc<Animal> animalReturner = dogReturner; //这里不懂啊,赋值表达式右边是泛型类,左边是泛型接口,不是不一致吗,为什么可以转换?