c#里面的泛型协变不懂

Tony_Xian 2017-08-23 10:17:26
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; //这里不懂啊,赋值表达式右边是泛型类,左边是泛型接口,不是不一致吗,为什么可以转换?
...全文
310 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hukeliang 2017-08-26
  • 打赏
  • 举报
回复
[code=c][code=csharp][code=javascript][code=perl][code=ruby][code=html][code=java][code=objc][code=python][code=vb]
[/code][/code][/code][/code][/code][/code][/code][/code][/code][/code]
xuzuning 2017-08-24
  • 打赏
  • 举报
回复
class SimpleReturn<T> : IMyIfc<T> { public T[] itmes = new T[2]; public T GetFirst() { return items[0]; } }
IEEE_China 2017-08-24
  • 打赏
  • 举报
回复
先检查你的拼写。public T[] itmes = new T[2];public T GetFirst() { return items[0]; } itmes和items什么鬼?
江湖评谈 2017-08-23
  • 打赏
  • 举报
回复
items 哪里有错误

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧