写点什么

C#特性聚焦:协变和逆变

  • 2008-11-17
  • 本文字数:406 字

    阅读完需:约 1 分钟

为了匹配 Java 及支持 J#,.NET 数组总是一个协变变量。不幸的是,这样做是一种不安全的方式,在数组中存储值的时候都需要进行运行时检查。对于.NET 2 和泛型,协变和逆变变异都不能支持了。

.NET 4 将在接口和委托上支持安全的协变和逆变。为了实现这种功能,在接口上的类型应该被标记为“in”或“out”修饰符。如果标记为 out,那么接口就支持协变,并且给定的类型只能表现为一个返回类型或只读属性。如果标记为 in,那么类型只能表现为一个参数或只写属性。

这个功能只对引用类型有效,在结构上不允许变异。通过引用传递的参数同样也不允许。可被标记为支持变异的主要接口和委托有,IEnumerable、IQueryable、Func 和 Action 等。

更多关于这个功能的信息可以浏览我们的文章《在.NET 泛型中协变和逆变》以及Eric Lippert 的 Co- and contra-variance: how do I convert a List(Of Apple) into a List(Of Fruit)

查看英文原文: C# Feature Focus: Co- and Contra-variance

2008-11-17 09:582585
用户头像

发布了 254 篇内容, 共 57.0 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

Casper Labs 与 IBM Consulting 合作,透明度、审计能力的新方案

股市老人

学习如何使用 Python 连接 MongoDB: PyMongo 安装和基础操作教程

小万哥

Python 数据库 程序人生 软件工程 后端开发

Mac音乐制作软件 Live 11 详细图文安装教程 附Ableton Live激活工具

Rose

Mac软件:使用【Path Finder】来管理你的文件

Rose

indesign2024打开后进不了页面

Rose

十分钟教你在 k8s 中部署一个前后端应用

不在线第一只蜗牛

Kubernetes 容器 云原生 k8s

左耳听风 - 有竞争力的程序员「读书打卡 day 05」

Java 工程师蔡姬

读书笔记 程序员 个人成长 读书 竞争力

laravel最常见的问题

百度搜索:蓝易云

laravel 云计算 Linux 运维 云服务器

浅谈6种流行的API架构风格

EquatorCoco

架构 开发 API

授权的艺术

俞凡

管理

500mA High Voltage Linear Charger with OVP/OCP

梦笔生花

ubuntu18.04下安装PCL教程。

百度搜索:蓝易云

Linux ubuntu 运维 云服务器 PCL

tb商品评论数据接口Python

tbapi

淘宝API接口 淘宝商品评论接口 天猫商品评论接口 天猫评论接口 淘宝评论接口

Mac系统维护工具TinkerTool System v8.89最新下载

Rose

Mac财务管理软件Money Pro - 可同步账单、预算和账户

Rose

PlistEdit Pro for Mac(Plist编辑器) v1.9.7免激活版

南屿

专业的字体设计软件 FontLab

Rose

Substance 3D Designer最新图文安装教程 附Ds激活补丁

Rose

语音聊天室APP运营第一天:打造交互式社交体验

山东布谷科技胡月

语音直播 语音聊天室开发 语聊平台 语音派对房

Internet Status for Mac(网络连接状态查看工具)v5.7激活版 兼容M1/M2

Rose

最近很火的一款的低代码开发平台

互联网工科生

软件开发 低代码 JNPF 引迈信息

文心一言 VS 讯飞星火 VS chatgpt (177)-- 算法导论13.3 6题

福大大架构师每日一题

福大大架构师每日一题

SiteSucker Pro嵌入式视频下载工具 Mac破解软件 兼容M1/M2

Rose

必看:详解淘宝店铺订单数据API文档

tbapi

淘宝API接口 淘宝店铺订单接口 天猫店铺订单接口 淘宝店铺订单详情接口

【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之Spring定义Jackson转换Null的方法和实现案例

洛神灬殇

Java spring springboot 后端技术、 2024年第八篇文章

【Docker】Docker中 AUFS、BTRFS、ZFS、存储池概念的详细讲解

百度搜索:蓝易云

Docker 云计算 Linux 运维 AUFS

活动 | Mint Blockchain 将于 2024 年 1 月 17 号启动 MintID 限量发行活动

NFT Research

blockchain NFT\

苹果软件推荐:fork for mac破解版 GIT客户端

Rose

索尼电视投屏软件就用Mirror for Sony TV for mac

南屿

Mac软件 索尼电视 投屏

C#特性聚焦:协变和逆变_.NET_Jonathan Allen_InfoQ精选文章