当前位置: 首页 > backend >正文

C#语法篇 :基类子类转换,成员变化情况

在C#中,会有从子类对象到基类对象的转换,这属于C#中的向上扩容,一般可以默认转换。

方法的转换

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ex3._4
{class Father{public void F(){Console.WriteLine("A.F");}public virtual void G(){Console.WriteLine("A.G");}}class Son : Father{new public void F() { Console.WriteLine("B.F"); }public override void G(){Console.WriteLine("B.G");}}internal class Program{static void Main(string[] args){Son b = new Son();Father a = b; a.F(); b.F();a.G();b.G();}}}

对于上面这段程序,输出结果是这样的
在这里插入图片描述

其中b子类对象的输出当然都是正常的,而a父类的两个方法出现了歧义:a.F输出了a.F,a.G输出了b.G,这是因为对于new关键词来说,他没有彻底覆盖父类的方法,而只是定义了一种新的同名方法;对于virtual-override来说,新的子类方法覆盖了父类方法,使得即使对象转换回父类,也不再是父类的方法,而是子类先前覆盖后的方法。

字段的转换

对于子类转父类的字段变化,父类对象会把公共字段直接复制到新对象中

http://www.xdnf.cn/news/7877.html

相关文章:

  • 云蝠智能大模型呼叫动态情感共情能力上线!
  • SIGIR25-推荐论文整理
  • 面试相关的知识点
  • vue3 + vite 使用tailwindcss
  • 现代化SQLite的构建之旅——解析开源项目Limbo
  • 第17天-Pandas使用示例
  • 【SPIN】PROMELA 通道(Channels)(SPIN学习系列--8)
  • 【完整版】基于laravel开发的开源交易所源码|BTC交易所/ETH交易所/交易所/交易平台/撮合交易引擎
  • 机器学习-KNN算法
  • 为什么服务器突然变慢?从硬件到软件的排查方法
  • 论文阅读:Next-Generation Database Interfaces:A Survey of LLM-based Text-to-SQL
  • Flink架构概览,Flink DataStream API 的使用,FlinkCDC的使用
  • 手机充电协议
  • 目标检测135个前沿算法模型汇总(附源码)!
  • rocketmq优先级控制 + 并发度控制
  • 85本适合AI入门的人工智能书籍合集免费资源
  • 游戏引擎学习第301天:使用精灵边界进行排序
  • 数据湖和数据仓库的区别
  • 线程、线程池、异步
  • 人脸识别,使用 deepface + api + flask, 改写 + 调试
  • 【沉浸式求职学习day46】【华为5.7暑期机试题目讲解】
  • 广东省省考备考(第十六天5.21)—言语:语句排序题(听课后强化)
  • Mcu_Bsdiff_Upgrade
  • 数据结构与算法——堆
  • ThreadPoolTaskExecutor 和 ThreadPoolExecutor 的使用场景
  • (vue)前端实现下载后端提供的URL文件
  • 设计模式1 ——单例模式
  • 前后端的双精度浮点数精度不一致问题解决方案,自定义Spring的消息转换器处理JSON转换
  • LeetCode117_填充每个结点的下一个右侧结点指针Ⅱ
  • WPS深度适配鸿蒙电脑折叠形态,国产替代下的未来何在?