请问如何详细解释C语言编程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1093个文字,预计阅读时间需要5分钟。
基本概念+协变:能够使用比原始指定的生活类型更广泛的生活类型的生活过程类型。例如,IFoo父类=IFoo子类;逆变:能够使用比原始指定的生活类型更具体的生活类型的生活过程类型。例如,IFoo父类=IFoo子类。
基本概念
协变:能够使用比原始指定的派生类型的派生程度更大(更具体)的类型。例如 IFoo<父类> = IFoo<子类>
逆变:能够使用比原始指定的派生类型的派生程度更新(更抽象)的类型。例如 IBar<子类> = IBar<父类>
关键字out和in
协变和逆变在泛型参数中的表现方式,out关键字表示协变,in关键字表示逆变。二者只能在泛型接口或者委托中使用。
理解协变和逆变
看完上面的定义是不是一脸懵逼~~~。看不懂就对了,且定义语句的歧义性很大。让我们大脑赶紧清空下!!首先记住一点明确的概念,类的多态展示一定是通过基类来表示,派生的具体类都是可转化为基类,而不能走相反的流程。
下面我们用代码直观的表现下协变和逆变。
public class Animal { public void Eat() { } } public class Dog : Animal { public void Run() { } }
这是一段很简单的子类和父类的关系,我们进行一下简单的转化,应该很好理解,Dog子类可以用Animal父类展示,反过来则不可以,会编译错误。
本文共计1093个文字,预计阅读时间需要5分钟。
基本概念+协变:能够使用比原始指定的生活类型更广泛的生活类型的生活过程类型。例如,IFoo父类=IFoo子类;逆变:能够使用比原始指定的生活类型更具体的生活类型的生活过程类型。例如,IFoo父类=IFoo子类。
基本概念
协变:能够使用比原始指定的派生类型的派生程度更大(更具体)的类型。例如 IFoo<父类> = IFoo<子类>
逆变:能够使用比原始指定的派生类型的派生程度更新(更抽象)的类型。例如 IBar<子类> = IBar<父类>
关键字out和in
协变和逆变在泛型参数中的表现方式,out关键字表示协变,in关键字表示逆变。二者只能在泛型接口或者委托中使用。
理解协变和逆变
看完上面的定义是不是一脸懵逼~~~。看不懂就对了,且定义语句的歧义性很大。让我们大脑赶紧清空下!!首先记住一点明确的概念,类的多态展示一定是通过基类来表示,派生的具体类都是可转化为基类,而不能走相反的流程。
下面我们用代码直观的表现下协变和逆变。
public class Animal { public void Eat() { } } public class Dog : Animal { public void Run() { } }
这是一段很简单的子类和父类的关系,我们进行一下简单的转化,应该很好理解,Dog子类可以用Animal父类展示,反过来则不可以,会编译错误。

