这个问题在这里已经有了答案:Tmustbecontravariantlyvalid(3个答案)关闭3年前。为什么方法可以编译,属性却报错?publicinterfaceIFoo{}publicinterfaceIBarwhereT:IFoo{}publicinterfaceIItemwhereT:IFoo{//IEnumerable>GetList();//worksIEnumerable>ItemList{get;set;}//Error!}错误:Invalidvariance:Thetypeparameter'T'mustbecontravariantlyvalidon'UserQ
今天,我阅读了一些关于Java中的协变、逆变(和不变性)的文章。我阅读了英文和德文Wikipedia文章,以及IBM的其他一些博客文章和文章。但我仍然对这些到底是什么感到有些困惑?有人说是关于类型和子类型之间的关系,有人说是关于类型转换,有人说它是用来决定一个方法是被覆盖还是被重载。所以我正在寻找简单的英语解释,向初学者展示协方差和逆变(和不变性)是什么。加分是一个简单的例子。 最佳答案 Somesayitisaboutrelationshipbetweentypesandsubtypes,othersayitisabouttype
今天,我阅读了一些关于Java中的协变、逆变(和不变性)的文章。我阅读了英文和德文Wikipedia文章,以及IBM的其他一些博客文章和文章。但我仍然对这些到底是什么感到有些困惑?有人说是关于类型和子类型之间的关系,有人说是关于类型转换,有人说它是用来决定一个方法是被覆盖还是被重载。所以我正在寻找简单的英语解释,向初学者展示协方差和逆变(和不变性)是什么。加分是一个简单的例子。 最佳答案 Somesayitisaboutrelationshipbetweentypesandsubtypes,othersayitisabouttype