C#中new的用法及与override的区别分析
发布时间 - 2026-01-11 01:13:07 点击率:次C#中new的用法有三种:

(1)new是运算符,用于创建对象和调用构造函数。如Class1=new Class1();也可以为值类型调用默认的构造函数如int a=new int();此时a=0.
(2)new是修饰符,用于隐藏基类成员的继承成员。override不能隐藏积累成员的继承成员。如:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace A
{
class Program
{
abstract public class Test
{
public virtual void Prinf()
{
Console.WriteLine("Abstract Printf...");
}
}
public class Class1 : Test
{
public override void Prinf()
{
Console.WriteLine("Class One Override Printf...");
}
}
public class Class2 : Test
{
public new void Prinf()
{
Console.WriteLine("Class Two New Printf...");
}
}
static void Main(string[] args)
{
Class1 cls1 = new Class1();
Class2 cls2 = new Class2();
cls1.Prinf();
cls2.Prinf();
((Test)cls1).Prinf();
((Test)cls2).Prinf();
Console.ReadLine();
}
}
}
运行结果表明:new修饰符隐藏了重写方法,通过将派生对象转为为基类对象,调用了基类的方法。而override则是完全重写了方法,即便是转为基类对象也调用的也是派生类的重写方法。
即:new隐藏的基类方法,override重写基类方法。
(3)new是约束。用在泛型中添加类型的约束。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace A
{
class Test<T>
where T : new()//定义类型T的约束,表示T类型必须有不带参数的构造函数
{
public T GetItem()
{
return new T();//如果不添加new()约束,编译错误:变量类型“T”没有 new() 约束,因此无法创建该类型的实例
//想一下,T类型不知道,编译器不知道分配多大的空间,所以会通过反射技术实现
}
}
class TClass
{
private int a;
public TClass() //如果不添加无参构造函数,编译错误:TClass必须是具有公共的无参数构造函数的非抽象类型,才能用作泛型类型或方法“A.Test<T>”中的参数“T”
{
}
public TClass(int a)
{
this.a = a;
}
}
class Program
{
static void Main(string[] args)
{
Test<TClass> test = new Test<TClass>();
Console.ReadLine();
}
}
}
注释:参考http://msdn.microsoft.com/zh-cn/library/sd2w2ew5.aspx
# C#
# new
# 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的区别分析
# 重写
# 修饰符
# 则是
# 也可
# 写了
# 多大
# 不带
# 用在
# 有三种
# 运算符
# 派生类
# 即便是
# Program
# abstract
# Linq
# namespace
# Text
# Prinf
# Console
# WriteLine
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
网站制作壁纸教程视频,电脑壁纸网站?
Android利用动画实现背景逐渐变暗
详解jQuery中基本的动画方法
C#如何调用原生C++ COM对象详解
北京专业网站制作设计师招聘,北京白云观官方网站?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
Laravel如何使用Sanctum进行API认证?(SPA实战)
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
如何用PHP工具快速搭建高效网站?
Laravel怎么连接多个数据库_Laravel多数据库连接配置
制作公司内部网站有哪些,内网如何建网站?
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
iOS中将个别页面强制横屏其他页面竖屏
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
深入理解Android中的xmlns:tools属性
Swift中switch语句区间和元组模式匹配
Laravel中的Facade(门面)到底是什么原理
网站图片在线制作软件,怎么在图片上做链接?
如何注册花生壳免费域名并搭建个人网站?
公司门户网站制作流程,华为官网怎么做?
微信h5制作网站有哪些,免费微信H5页面制作工具?
网站制作免费,什么网站能看正片电影?
EditPlus 正则表达式 实战(3)
怎样使用JSON进行数据交换_它有什么限制
微信小程序 input输入框控件详解及实例(多种示例)
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
Laravel如何使用Blade模板引擎?(完整语法和示例)
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
香港服务器网站推广:SEO优化与外贸独立站搭建策略
高性能网站服务器部署指南:稳定运行与安全配置优化方案
如何快速搭建安全的FTP站点?
如何快速查询网址的建站时间与历史轨迹?
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
如何在腾讯云服务器上快速搭建个人网站?
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
微信小程序 require机制详解及实例代码
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何快速上传自定义模板至建站之星?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
独立制作一个网站多少钱,建立网站需要花多少钱?
原生JS实现图片轮播切换效果
如何在Tomcat中配置并部署网站项目?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】

