美文网首页
C# 泛型简介 03

C# 泛型简介 03

作者: JeetChan | 来源:发表于2019-08-20 11:47 被阅读0次

声明

本文内容来自微软 MVP solenovex 的视频教程——真会C#? - 第3章 泛型简介(完结),大致和第 3 课—— 3.9 协变、逆变、不变 对应。可在 GitHub 中查看 C# 视频教程的配套PPT

本文主要包括以下内容:

  1. 协变,逆变,不变

协变,逆变,不变

Covariance 协变,当值作为返回值/out 输出。

Contravariance 逆变,当值作为输入 input。

Invariance 不变,当值既是输入又是输出。

public interface IEnumerable<out T>
public delegate void Action<in T>
public interface IList<T>

Variance

variance 只能出现在接口和委托里。

Variance 转换

涉及到 variance 的转换就是 variance 转换。
Variance 转换是引用转换的一个例子。引用转换就是指,你无法改变其底层的值,只能改变编译时类型。
identity conversion,对 CLR 而言从一个类型转化到相同的类型。

合理的转换

如果从 A 到 B 的转换是本体转换或者隐式引用转换,那么从 IEnumerable<A> 到 IEnumerable<B> 的转换就是合理的:

IEnumerable<string> to IEnumerable<object>
IEnumerable<string> to IEnumerable<IConvertible>
IEnumerable<IDisposable> to IEnumerable<object>

不合理的转换

IEnumerable<object> to IEnumerable<string>
IEnumerable<string> to IEnumerable<Stream>
IEnumerable<int> to IEnumerable<IConvertible>
IEnumerable<int> to IEnumerable<long>

C# 的泛型,生产类型(例如 List<T> )可以被编译到 dll 里。这是因为这种在生产者和产制封闭类型的消费者之间的合成是发生在运行时的。

C# 泛型

参考

Generics (C# Programming Guide)
Generic Methods (C# Programming Guide)
Generic Classes (C# Programming Guide)

相关文章

  • C# 泛型简介 03

    声明 本文内容来自微软 MVP solenovex 的视频教程——真会C#? - 第3章 泛型简介(完结),大致和...

  • 目录 - C#

    总目录 C# 第01局:泛型 C# 第02局:反射 C# 第03局:特性 C# 第04局:委托 C# 第05局:事...

  • C#基础提升系列——C#泛型

    C# 泛型(Generics) 泛型概述 泛型是C#编程语言的一部分,它与程序集中的IL(Intermediate...

  • 19、泛型

    1. 简介: 2.0 版 C# 语言和公共语言运行时 (CLR) 中增加了泛型。 泛型将类型参数的概念引入 .NE...

  • 面向对象(十二)-泛型

    1. 简介: 2.0 版 C# 语言和公共语言运行时 (CLR) 中增加了泛型。 泛型将类型参数的概念引入 .NE...

  • 24、泛型

    1. 简介: 2.0 版 C# 语言和公共语言运行时 (CLR) 中增加了泛型。 泛型将类型参数的概念引入 .NE...

  • C# 泛型简介 02

    声明 本文内容来自微软 MVP solenovex 的视频教程——真会C#? - 第3章 泛型简介(完结),大致和...

  • C# 泛型简介 01

    声明 本文内容来自微软 MVP solenovex 的视频教程——真会C#? - 第3章 泛型简介(完结),大致和...

  • C#---API-02(Application Programm

    一、泛型概述 1. 泛型 1.1 泛型是什么? 泛型(generic)是C#语言2.0和通用语言运行时(CLR)得...

  • TS 笔记九 泛型

    参考C# 泛型 泛型与非泛型集合[https://www.jianshu.com/p/e45e7573f928] ...

网友评论

      本文标题:C# 泛型简介 03

      本文链接:https://www.haomeiwen.com/subject/wcnusctx.html