首页 > 编程语言 >C# new关键字的三种用法

C# new关键字的三种用法

时间:2024-07-02 18:28:14浏览次数:20  
标签:C# 关键字 泛型 new BaseClass Method 构造函数

在C#中,new关键字具有多种不同的用途,主要包括以下三个:

1.作为运算符:

创建对象和调用构造函数:这是最常见的用法,用于在堆上分配内存并初始化一个类的新实例。例如:

Person person = new Person(); // 调用默认构造函数Person anotherPerson = new Person("Alice", 30); // 调用带参数的构造函数

调用值类型的默认构造函数:对于值类型(如结构体),new也可以用于调用其默认构造函数。

DateTime today = new DateTime(); // 创建DateTime的默认实例

2.作为修饰符:

隐藏继承的成员:当在派生类中重新定义了一个从基类继承的成员时(即使签名完全相同),可以使用new关键字来明确表示这不是要实现多态性,而是要隐藏基类的成员。例如:​​​​​​​

class BaseClass{    public void Method() { Console.WriteLine("BaseClass.Method"); }}
class DerivedClass : BaseClass{    public new void Method() { Console.WriteLine("DerivedClass.Method"); }}

在这种情况下,只有当引用是通过DerivedClass类型访问时,才会调用新的方法。如果引用是BaseClass类型,即使它实际上指向的是DerivedClass的实例,调用的仍然是BaseClass的Method。

3.作为泛型约束:

泛型约束中的new()约束:在泛型声明中,可以使用new()约束来指定类型参数必须有一个公共的无参构造函数。这允许在泛型类或方法内部创建该类型的新实例。例如:​​​​​​​

class GenericList<T> where T : new(){    public void AddNewItem()    {        T item = new T(); // 这里可以创建T的新实例        // ...    }}

这些不同的用途展示了new关键字在C#中的灵活性,既可用于对象创建,也可用于实现特定的面向对象设计模式,以及增强泛型的实用性。

C#35

C# · 目录 

想了解更多游戏开发知识,可以扫描下方二维码,免费领取游戏开发4天训练营课程

标签:C#,关键字,泛型,new,BaseClass,Method,构造函数
From: https://blog.csdn.net/2401_82584055/article/details/140133816

相关文章

  • 【技海探究·匠心筑梦】I‘mAlex的CSDN 128天创作纪念日:从初心到憧憬
    【技海探究·匠心筑梦】I‘mAlex的CSDN128天创作纪念日:从初心到憧憬......
  • 基准测试程序的认知与分析 —— SPEC基准测试程序集的深入探索
    基准测试程序的认知与分析——SPEC基准测试程序集的深入探索一、实验目的:了解和掌握Spec基准程序测试对基准程序测试结果进行分析和比较二、实验准备知识:计算机系统设计和分析的量化原则。计算机系统设计和分析的量化原则是指导计算机系统架构设计与评估的一系列准......
  • 使用nodejs ws模块连接websocket服务器Unexpected response code: 403错误解决
    使用浏览器连接websocket服务器时一切正常,但是使用nodejs ws模块连接时一直报Unexpectedresponsecode:403错误,查了很多帖子都没说明白,最后自己试着一点一点对比模拟浏览器请求头,最终解决问题,解决后代码如下://TODO不加这个,会报403错误constoptions={headers:{......
  • 服务器上怎么部署docker
    在服务器上部署Docker主要涉及以下几个步骤,这里以UbuntuLinux为例,其他操作系统的步骤略有不同:在Ubuntu上部署Docker的步骤:1.安装Docker更新包索引:sudoaptupdate安装依赖包,以允许apt使用HTTPS访问Docker仓库:sudoaptinstall-yapt-transport-h......
  • 华为OCR 腾讯OCR 百度OCR 三家各分秋色 第一当属华为
    当提及华为OCR的应用场景时,这些是常见的使用案例:金融行业:在银行和金融机构中,华为OCR技术广泛用于身份证件识别、银行卡识别和票据识别。这些功能可以用于客户身份验证、快速开户以及自动化的支付处理。政府服务:政府部门利用华为OCR技术进行公民身份证识别、驾驶证和车牌识......
  • 将多个Excel工作表合并成一个工作表,1分钟轻松搞定!
    1.案例展示2.视频详解多个工作表合并成一个工作表3.图文详解第一步:相同格式(表头)的表格,并将所有表格都放在一个文件夹内“将多个工作表合并成一个工作表”(自己定义文件名)第二步:新建一个空文档,点击数据→新建查询→从文件→从文件夹→浏览→选择“将多个工作表合并......
  • learncpp网站学习笔记
    0.1课程简介教程特点:零基础适用、示例丰富课程结构:第0章介绍c++编程的相关概念及软件;第1章介绍c++基础,后面章节深入研究;每章都有一个主题目标涵盖一般的编程主题:编程风格、常见陷阱、调试、好/坏的编程实践、测试提供大量示例(尽量不在示例中省略内容、引入未解释过的概念......
  • 29-Calendar
    Calendar提供获取或设置各种日历字段的方法构造方法:protectedCalendar():修饰符是protected,故无法直接创建对象//1创建Calendar对象Calendarcalendar=Calendar.getInstance();//用方法创建对象//打印时间,不能直接calendar.toString()......
  • 【PWM太阳能控制器调光方案】5V升24V 6A大电流无频闪PWM调光升压恒流LED驱动芯片FP720
    目前led灯带产品应用越来越广泛,在节能环保的社会快速发展驱动下,太阳能照明产品越来越多。但是现有技术中,有些空间狭小,又长又窄的环境空间不适用于现有的太阳能灯使用,现有技术中的太阳能灯照明效果不佳且不能够实现智能化照明;因此迫切地需要重新设计一款新的太阳能led灯带以......
  • Python123:找出不是两个数组共有的元素、矩阵运算、方阵循环右移(C语言)
    文章目录1、找出不是两个数组共有的元素2、矩阵运算3、方阵循环右移1、找出不是两个数组共有的元素题目:给定两个整型数组,本题要求找出不是两者共有的元素。输入格式:输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。‪‬‪......