相关疑难解决方法(0)

协方差和逆变现实世界的例子

我在理解如何在现实世界中使用协方差和逆变时遇到了一些麻烦.

到目前为止,我见过的唯一例子是同样的旧数组示例.

object[] objectArray = new string[] { "string 1", "string 2" };
Run Code Online (Sandbox Code Playgroud)

很高兴看到一个允许我在开发过程中使用它的例子,如果我能看到它在其他地方使用的话.

c# covariance c#-4.0

149
推荐指数
8
解决办法
6万
查看次数

逆向解释

首先,我对SO和有关协变和逆变和一个大感谢博客出去看了很多解释埃里克利珀用于生产在这样一个伟大的系列赛协变和逆变.

但是我有一个更具体的问题,我试图让我的头脑稍微偏执一点.

据我所知,根据埃里克的解释,协方差和反方差都是描述转换的形容词.协变变换是保留类型顺序的变换,逆变变换是逆转变换的变换.

我理解协方差,我认为大多数开发人员直观地理解.

//covariant operation
Animal someAnimal = new Giraffe(); 
//assume returns Mammal, also covariant operation
someAnimal = Mammal.GetSomeMammal(); 
Run Code Online (Sandbox Code Playgroud)

这里的返回操作是协变的,因为我们保留了动物仍然比哺乳动物或长颈鹿大的大小.在这方面,大多数返回操作都是协变的,逆变操作是没有意义的.

  //if return operations were contravariant
  //the following would be illegal
  //as Mammal would need to be stored in something
  //equal to or less derived than Mammal
  //which would mean that Animal is now less than or equal than Mammal
  //therefore reversing the relationship
  Animal someAnimal =  Mammal.GetSomeMammal(); 
Run Code Online (Sandbox Code Playgroud)

这段代码当然对大多数开发人员没有意义.

我的困惑在于Contravariant参数参数.如果你有一个方法,如

bool Compare(Mammal mammal1, Mammal …
Run Code Online (Sandbox Code Playgroud)

c# covariance contravariance c#-4.0

36
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×2

c#-4.0 ×2

covariance ×2

contravariance ×1