C#中new的几种用法详解

发布时间 - 2026-01-10 23:19:44    点击率:

在 C# 中,new 关键字可用作运算符、修饰符或约束。

new 运算符

用于创建对象和调用构造函数。

new 修饰符

用于向基类成员隐藏继承成员。

new 约束

用于在泛型声明中约束可能用作类型参数的参数的类型。

new 修饰符(C# 参考)

在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。在不使用 new 修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new 显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。

若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new 修饰符修饰该成员

new 运算符(C# 参考)

1.用于创建对象和调用构造函数。例如:

Class1 o = new Class1();

2.也用于为值类型调用默认的构造函数

 例:int myInt = new int();

 myInt 初始化为 0,它是 int 类型的默认值。该语句的效果等同于:int myInt = 0;

3.不能重载 new 运算符。

4.如果 new 运算符分配内存失败,则它将引发 OutOfMemoryException 异常

new 约束(C# 参考)

new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。当泛型类创建类型的新实例时,将此约束应用于类型参数,如下面的示例所示:

class ItemFactory<T> where T : new() 
{ 
public T GetNewItem() 
{ 
return new T(); 
} 
}

通过继承隐藏名称采用下列形式之一:

  1.引入类或结构中的常数、指定、属性或类型隐藏具有相同名称的所有基类成员。

  2.引入类或结构中的方法隐藏基类中具有相同名称的属性、字段和类型。同时也隐藏具有相同签名的所有基类方法。

  3.引入类或结构中的索引器将隐藏具有相同名称的所有基类索引器。

  4.在同一成员上同时使用 new 和 override 是错误的。

  注意:在不隐藏继承成员的声明中使用 new 修饰符将生成警告。

 示例

  在该例中,嵌套类 MyClass 隐藏了基类中具有相同名称的类。该例不仅说明了如何使用完全限定名访问隐藏类成员,同时也说明了如何使用 new 修饰符消除警告消息。

   using System; 
   public class MyBaseC 
   { 
   public class MyClass 
   { 
   public int x = 200; 
   public int y; 
   } 
   } 
   public class MyDerivedC : MyBaseC 
   { 
   new public class MyClass // nested type hiding the base type members 
   { 
   public int x = 100; 
   public int y; 
   public int z; 
   } 
   public static void Main() 
  { 
   // Creating object from the overlapping class: 
   MyClass S1 = new MyClass(); 
   // Creating object from the hidden class: 
  MyBaseC.MyClass S2 = new MyBaseC.MyClass(); 
   Console.WriteLine(S1.x); 
   Console.WriteLine(S2.x); 
   } 
   } 

  输出
  100
  200

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# C#  # new  # 详解C#用new和override来实现抽象类的重写区别  # 深入理解C#中new、override、virtual关键字的区别  # C#基础知识之new关键字介绍  # C#中Override关键字和New关键字的用法详解  # C#中new和override的区别个人总结  # .net(c#)中的new关键字详细介绍  # 基于C# 中可以new一个接口?的问题分析  # C# new和override的区别分析  # C#中new的用法及与override的区别分析  # 修饰符  # 运算符  # 类中  # 如何使用  # 这一  # 它是  # 请使用  # 应用于  # 所示  # 将此  # 说明了  # 它将  # 也说  # 若要  # 默认值  # 情况下  # 代之以  # 都必须  # 在同一  # style 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: LinuxShell函数封装方法_脚本复用设计思路【教程】  如何快速生成橙子建站落地页链接?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  Laravel怎么判断请求类型_Laravel Request isMethod用法  Python文件操作最佳实践_稳定性说明【指导】  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  英语简历制作免费网站推荐,如何将简历翻译成英文?  Laravel distinct去重查询_Laravel Eloquent去重方法  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Bootstrap CSS布局之列表  浅谈Javascript中的Label语句  如何在自有机房高效搭建专业网站?  Laravel storage目录权限问题_Laravel文件写入权限设置  Laravel如何与Pusher实现实时通信?(WebSocket示例)  如何快速搭建高效WAP手机网站吸引移动用户?  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  七夕网站制作视频,七夕大促活动怎么报名?  常州企业网站制作公司,全国继续教育网怎么登录?  JavaScript如何实现倒计时_时间函数如何精确控制  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  如何在阿里云完成域名注册与建站?  如何续费美橙建站之星域名及服务?  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  WEB开发之注册页面验证码倒计时代码的实现  Android自定义控件实现温度旋转按钮效果  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  如何快速建站并高效导出源代码?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  香港服务器如何优化才能显著提升网站加载速度?  黑客入侵网站服务器的常见手法有哪些?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  用v-html解决Vue.js渲染中html标签不被解析的问题  浅析上传头像示例及其注意事项  微信推文制作网站有哪些,怎么做微信推文,急?  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel怎么实现模型属性的自动加密  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  Swift中swift中的switch 语句  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  详解Android——蓝牙技术 带你实现终端间数据传输  济南网站建设制作公司,室内设计网站一般都有哪些功能?  如何确保FTP站点访问权限与数据传输安全?  在centOS 7安装mysql 5.7的详细教程  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  微信小程序 input输入框控件详解及实例(多种示例)  WordPress 子目录安装中正确处理脚本路径的完整指南  Win11关机界面怎么改_Win11自定义关机画面设置【工具】