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

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.dtcms.com/a/204450.html

相关文章:

  • Web3 领域中的一些专业术语
  • Circle宣布Circle Payments Network主网上线
  • 云祺容灾备份系统公有云备份与恢复实操-华为云
  • 面向恶劣条件的道路交通目标检测----大创自用(当然你也可以在里面学到很多东西)
  • 代码随想录打卡|Day45 图论(孤岛的总面积 、沉没孤岛、水流问题、建造最大岛屿)
  • Linux问题排查-引起服务器带宽使用率高的内鬼
  • 架构的设计
  • APM32小系统键盘PCB原理图设计详解
  • C语言中的弱符号 __attribute__((weak)) 的使用方法
  • asp.net web form nlog的安装
  • ARM反汇编浅析
  • Webpack 分包策略详解及实现
  • word格式相关问题
  • 网络安全之APP渗透测试总结
  • C#面:Server.UrlEncode、HttpUtility.UrlDecode的区别
  • Go语言打造:超高性能分布式唯一ID生成工具
  • 在 VB6 中强制设置 Word 文档的纸张尺寸
  • DeepSeek之RAG检索增强生成
  • 电路设计基础
  • 操作系统 第四章 -1
  • 【前端基础】12、CSS的overflow(visible、hidden、scroll、auto)【注:只有最基础的说明。】
  • 实现动态增QuartzJob,通过自定义注解调用相应方法
  • Sentinel原理与SpringBoot整合实战
  • spring-retry
  • 【springcloud核心技术站概述】
  • Dynamics 365 Business Central Azure application registration
  • Docker 镜像打包到本地
  • ArcGIS Pro 3.4 二次开发 - 核心主机
  • 《大模型开源与闭源的深度博弈:科技新生态下的权衡与抉择》
  • 中天智能装备科技有限公司:智能仓储领域的卓越之选​