栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在C#4.0中如何实现通用协方差和反方差?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在C#4.0中如何实现通用协方差和反方差?

仅以 安全的 方式支持方差-实际上,使用CLR已具备的功能。因此,我在本书中尝试使用a

List<Banana>
作为
List<Fruit>
(或其他形式)的示例仍然无法使用-但还有其他一些情况。

首先,只支持接口和委托。

其次,它要求接口/委托的作者将类型参数修饰

in
out
(对于协方差)或(对于协方差)。最明显的例子是
IEnumerable<T>
,仅允许您从中“取出”值-不允许添加新值。那将成为
IEnumerable<outT>
。这一点也不损害类型安全,但是可以让您
IEnumerable<string>
从声明为要返回的方法中返回
IEnumerable<object>

协方差很难给出使用接口的具体示例,但是使用委托很容易。考虑

Action<T>
-仅代表采用
T
参数的方法。能够无缝地使用
Action<object>
as
进行转换将是很好的
Action<string>
-任何带有
object
参数的方法在以a
string
代替时都会很好。当然,C#2在某种程度上已经具有委托的协变性和协变性,但是通过从一种委托类型到另一种委托类型的实际转换(创建新实例),请参见P141-144。C#4将使其变得更通用,并且(我相信)将避免为转换创建新实例。(这将是参考转换。)

希望这可以清除一点-如果没有任何意义,请通知我!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/447195.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号