gpt4 book ai didi

C# : Is Variance (Covariance/Contravariance) another word for Polymorphism?

转载 作者:IT王子 更新时间:2023-10-29 03:55:50 26 4
gpt4 key购买 nike

我试图从网上的几篇文章和 StackOverflow 上的问题中找出 CovarianceContravariance 这两个词的确切含义,据我所知,这只是多态性的另一种说法

我上面的说法正确吗?还是我听错了?

最佳答案

肯定和多态有关。不过,我不会说它们只是多态性的“另一个词”——它们是关于非常具体的情况,在这种情况下,您可以将一种类型视为另一种类型在特定上下文中

例如,使用正常的多态性,您可以处理对 Banana 的任何引用作为对 Fruit 的引用- 但这并不意味着您可以替代 Fruit 每次 当您看到 Banana 类型时.例如,List<Banana>不能被视为 List<Fruit>因为list.Add(new Apple())适用于 List<Fruit>但不适用于 List<Banana> .

协变允许在 API 中替换“更大”(不太具体)的类型,其中原始类型用于“输出”位置(例如作为返回值)。逆变允许在 API 中替换“更小”(更具体)的类型,其中原始类型用于“输入”位置。

很难在单个 SO 帖子中详细介绍所有细节(尽管希望其他人能做得比这更好!)。埃里克·利珀特 (Eric Lippert) 拥有出色的 series of blog posts关于它。

关于C# : Is Variance (Covariance/Contravariance) another word for Polymorphism?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1078423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com