基础才是重中之重——派生类集合与基类集合可以相互转换吗?

简介:

派生类可以直接强转为类基类型,而反之则不可以,它们的集合也具有这种特性

以下实例是parent是基类,sub是它的派生类,如果有一个sub类型的集合希望转换为parent,那是可以的,它可以广泛的应用于面向接口和面向抽象的编程

环境中。

 1     class parent
 2     {
 3         public string name { get; set; }
 4     }
 5     class sub : parent { }
 6 
 7              #region 由派生类集合强转成父类集合(正确)
 8             List<sub> sublist = new List<sub> { new sub { name = "zzl" }, new sub { name = "zhz" } };
 9             sublist.Cast<parent>().ToList().ForEach(i => Console.WriteLine(i.name));
10             #endregion
11 
12             #region 由父类集合强转成派生类集合(出错)
13             List<parent> parentlist = new List<parent> { new sub { name = "zzl" }, new parent { name = "zhz" } };
14             parentlist.Cast<sub>().ToList().ForEach(i => Console.WriteLine(i.name));
15             #endregion

 本文转自博客园张占岭(仓储大叔)的博客,原文链接:基础才是重中之重——派生类集合与基类集合可以相互转换吗?,如需转载请自行联系原博主。

目录
相关文章
|
1月前
|
设计模式 数据处理
|
5月前
|
存储 安全 Java
java泛型与迭代器的关系
java泛型与迭代器的关系
|
5月前
|
设计模式 存储 Java
JavaSE——面向对象高级三(3/5)-枚举(认识枚举、拓展:抽象枚举、用枚举实现单例模式、枚举的应用场景)
JavaSE——面向对象高级三(3/5)-枚举(认识枚举、拓展:抽象枚举、用枚举实现单例模式、枚举的应用场景)
34 0
|
6月前
|
存储 C++
c++类和对象一对象特性一成员变量和成员函数分开存储
c++类和对象一对象特性一成员变量和成员函数分开存储
38 0
|
编译器 C语言 Swift
05-📝C++核心语法|面向对象3【 继承和派生、多态、静态成员、const成员、引用类型成员、VS的内存窗口】
复习`C++核心语法`,且适当进行汇编探索底层实现原理,进一步夯实基础,为以后的`底层开发`、`音视频开发`、`跨平台开发`、`算法`等方向的进一步学习埋下伏笔。
05-📝C++核心语法|面向对象3【 继承和派生、多态、静态成员、const成员、引用类型成员、VS的内存窗口】
|
Java C++
面对对象三大特性:封装、继承、多态
面对对象三大特性:封装、继承、多态
|
缓存 算法 编译器
【C#本质论 十】合式类型(一)重写Object成员及操作符重载(上)
【C#本质论 十】合式类型(一)重写Object成员及操作符重载(上)
79 0
|
存储 C# 索引
C#索引器的实现、索引器和属性的异同对比,这些技能你get到了嘛?
C#索引器的实现、索引器和属性的异同对比,这些技能你get到了嘛?
429 0
C#索引器的实现、索引器和属性的异同对比,这些技能你get到了嘛?
|
Java
思想:java中,父类的方法中传入的形参的数据类型是泛型,子类的方法的形参想只要一种确定的数据类型,子类该如何做呢?
解决问题的思想: /* * 思想: * java中,父类的方法传入的形参的数据类型是泛型,子类的方法的形参想只要一种确定的数据类型,子类该如何做呢? *   答:那么子类可以重新写一个方法,形参传入的是一种想要的数据类型,而子类方法里面调用的还是父类的方法。
1255 0