C# 中 `new` 关键字的用法

embedded/2025/1/8 2:39:45/

在 C# 中,new 关键字用于修饰方法、属性、索引器或事件声明时,表示当前成员隐藏基类中同名的成员。它们之间的具体区别如下:

  1. 不加 new

    • 如果子类定义了一个与父类同名的方法,但没有使用 new 关键字,编译器会发出警告,提示你可能无意中隐藏了基类的方法。
    • 这种情况下,子类的方法仍然会隐藏基类的方法,但调用时如果使用的是基类引用,将调用基类的方法。
  2. new

    • 明确表示子类的方法有意隐藏基类中的同名方法。
    • 编译器不会发出警告,因为你知道自己在做什么。
    • 调用时如果使用的是基类引用,仍然会调用基类的方法;如果使用的是子类引用,则会调用子类的方法。

下面是一个示例代码:

using System;class BaseClass {public void show() {Console.WriteLine("BaseClass show");}
}class DerivedClass : BaseClass {// 使用 new 关键字隐藏基类方法public new void show() {Console.WriteLine("DerivedClass show");}
}class Program {static void Main(string[] args) {BaseClass baseObj = new DerivedClass();baseObj.show();  // 输出: BaseClass showDerivedClass derivedObj = new DerivedClass();derivedObj.show();  // 输出: DerivedClass show}
}

在这个例子中:

  • 当使用 BaseClass 类型的引用调用 show 方法时,即使对象是 DerivedClass 的实例,也会调用基类的 show 方法。
  • 当使用 DerivedClass 类型的引用调用 show 方法时,会调用子类的 show 方法。

http://www.ppmy.cn/embedded/152165.html

相关文章

网络设备安全

21.1 概况 1)交换机安全威胁 交换机是构成网络的基础设备,主要的功能是负责网络通信数据包的交换传输 MAC 地址泛洪(flooding):通过伪造大量的虚假 MAC 地址发往交换机ARP(地址解析协议(Addr…

docker优雅停止容器

优雅停止容器 docker stop: 先请求容器进程停止,如果10秒后未停止,将会强制kill该进程。 docker stop命令试图向容器内的根进程(PID1)发送SIGTERM信号来停止正在运行中的容器。如果根进程在超时时间(默认10s&#xff…

redis cluster 主节点挂了,如何保证消息不丢失

redis cluster 主节点挂了,从节点切换成主节点时,如何保证消息不丢失 在 Redis Cluster 中,主节点挂掉后,能够确保消息不丢失的关键在于以下几个机制: 1. Redis Cluster 的数据复制机制 Redis Cluster 使用了主从复…

Redis哨兵(sentinel)

是什么 吹哨人巡查监控后台master主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务 哨兵的作用 1、监控redis运行状态,包括master和slave 2、当master down机,能自动将slave切换成新master 能干嘛…

Lua语言的数据库交互

Lua语言的数据库交互 引言 Lua是一种轻量级、高效、可扩展的脚本语言,广泛应用于游戏开发、嵌入式系统以及快速原型开发等领域。在现代软件开发中,数据的持久化和管理变得尤为重要,因此数据库交互成为开发者必不可少的技能之一。本文将深入…

深入解析Spring Boot项目的类加载与启动流程

引言 Spring Boot 是当今 Java 开发中最流行的框架之一,其“约定优于配置”的理念大大简化了应用程序的开发过程。然而,Spring Boot 的启动过程涉及诸多底层机制,其中类加载与启动流程是理解 Spring Boot 内部原理的核心。本文将全面解析 Sp…

STM32拓展 低功耗案例1:睡眠模式 (hal)

STM32CubeMX设置 开串口以及中断 LED2&#xff0c;配置GPIO 生成项目&#xff1a; keil配置自动复位和打开MicroLIB 书写代码&#xff1a;首先书写uart.c中重写printf #include <stdio.h> int fputc (int ch,FILE * file) {HAL_UART_Transmit(&huart1,(uin8_t *)&…

OpenCV-Python实战(15)——像素直方图均衡画

一、像素均值与标准差 1.1 像素均值 cv2.mean() mean_val cv2.mean(img,mask*) mean_val&#xff1a;图像 BGR 通道的均值和透明度。 img&#xff1a;图像。 mask&#xff1a;可以选择是否添加掩膜&#xff0c;默认为&#xff1a;None。 import cv2 import numpy as npim…