C#的new关键字的几种用法

2023-11-19

一共有三种用法:
在 C# 中,new 关键字可用作运算符、修饰符或约束。
1)new 运算符:用于创建对象和调用构造函数。这种大家都比较熟悉,没什么好说的了。
2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。
3)new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型。

直接上代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NewTest
{
    /*
     * a)     作为运算符用来创建一个对象和调用构造函数。
     * b)     作为修饰符。
     * c)      用于在泛型声明中约束可能用作类型参数的参数的类型。
     * 
     */

    class A
    {
        public A() { }
        public int data;
        public int Data { get { return data; } set { data = value; } }
        public int Data1 { get; set; }
        public virtual void Get()
        {
            Console.WriteLine("AAAAAAA");
        }
    }

    class B : A
    {
        public B():base() { }
        new public int data;
        new public int Data { get; set; }
        new public int Data1 { get; set; }
        new public void Get()
        {
            Console.WriteLine("BBBBBBB");
        }
    }
    class C<T> where T:new()
    {
    }
    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            b.data = 10;
            b.Data = 12;
            b.Data1 = 13;
            Console.WriteLine($"B:::data:{b.data},Data:{b.Data},Data1:{b.Data1}");
            b.Get();
            A a = b ;
            Console.WriteLine($"A:::data:{a.data},Data:{a.Data},Data1:{a.Data1}");
            a.data = 100;
            a.Data = 120;
            a.Data1 = 130;
            Console.WriteLine($"A:::data:{a.data},Data:{a.Data},Data1:{a.Data1}");
            a.Get();
            Console.WriteLine($"B:::data:{b.data},Data:{b.Data},Data1:{b.Data1}");
            b.Get();
            C<B> c = new C<B>();
        }
    }
}

结果:
在这里插入图片描述

b断点调试结果:
在这里插入图片描述

这里说明下,重写父类的变量其实是重新定义了一个新的变量,变量名相同是把父类的变量隐藏了,会增加内存

参考文章:
C#的new关键字的几种用法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#的new关键字的几种用法 的相关文章

  • C# 锁(mylocker) 不起作用

    我有很多 Web 服务调用 异步 在回调中 我会将结果绘制到 Excel 中 我想同步绘图方法 所以我使用以下内容 但是 从我在 Visual Studio 中追踪到 每次 lock locker 都会成功 并且有许多线程运行clearco
  • 使用 C# 和反射打印完整的对象图

    我有一个复杂的对象 class A int Field1 int field2 property ClassB ClassB property classC classC etc etc 我想使用反射打印完整的对象图 有什么好的代码吗 一种
  • 如何让BackgroundWorker返回一个对象

    我需要做RunWorkerAsync 返回一个List
  • .NET:EventHandler 竞争条件修复如何工作?

    以下模式用于在引发事件时避免竞争条件 以防另一个线程取消订阅 MyEvent 使其为空 class MyClass public event EventHandler MyEvent public void F EventHandler h
  • 起订量工作单元

    我是单元测试的新手 我想为我的搜索功能创建一个测试 我的服务层看起来像 public class EmployeeService BaseService IEmployeeService public EmployeeService IUn
  • C 风格强制转换与内在强制转换

    假设我已经定义了 m256d x我想提取低 128 位 我会做 m128d xlow mm256 castpd256 pd128 x 然而 我最近看到有人这样做 m128d xlow m128d x 是否有用于演员的首选方法 为什么要用第一
  • Apple IOS 上的 C# 应用程序 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有基于 C Net 的应用程序 有什么方法可以在 Apple IOS 上运行这些应用程序吗 我没有资
  • 使用 c# 中的 c++ ref 中的引用从 C# 调用 C++ 代码错误

    所以在我的 c dll 文件中我得到了以下函数 DLL void GetUserPass char userName char passWord userName ceva passWord altceva 现在我想从 c 调用它 但它给了
  • C++中的虚方法表存放在哪里?

    我想知道类对象 不是实例 而是类 如何存储在内存中 class A public int a virtual void f virtual A class B public A public int b void f final overr
  • 在unity3D中显示数学方程

    我想使用它的 GUI 系统统一显示数学方程 有办法吗 我正在使用 C 语言在 Unity 中进行编程 如果我还可以使用 C 代码显示数学符号 这对我来说会很有用 谢谢 自 2016 年起 您可以使用TEXDraw https assetst
  • 获取RFC返回的嵌套结构的值?

    我是 C 新手 我有 rfc 它以嵌套结构的形式从 SAP 系统返回数据 但是当我使用以下方式获取该数据时 IrfcTable table rfc getTable exporting parameter et customer 它仅返回第
  • OpenMP 和 C++:this 指针

    Is thisOpenMP 中始终共享指针 尽管编译器不会抱怨以下代码default none pragma omp parallel for default none shared n for SInt i 0 i lt n i f i
  • cmake 包括其他目录中的 h 文件

    我在 cmake 项目下进行测试时遇到问题 我的项目是这样安排的 TerrainMap PointAccumulator heightQuadGrid Test 在 TerrainMap 目录中 CMakeLists txt 文件简单地概述
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 在 Ubuntu 16.04 上编译 PCL 1.7,CMake 生成的 Makefile 中出现错误

    我正在尝试让 PCL 1 7 点云库 而不是其他 pcl 在 Ubuntu 16 04 上运行 我最终希望用于 C 的东西 但现在我只是想让这些例子工作 我使用的是 Ubuntu GNU 5 3 1 附带的默认编译器和 Cmake 版本 3
  • 初始化二维数组时出现分段错误

    我已经检查过我的代码是否正确地划分了内存空间 但是一旦我尝试将 2D 数组初始化为某些值 然后对这些值求和 我就会在 2x2 数组上收到分段错误 我想最终将我的代码扩展到更大的数组 但我什至无法让它在这里工作 我知道有很多关于 malloc
  • AllowUserToAddRows 不适用于 DataGridView 上的 List<> 数据源

    我有一个DataGridView与DataSource set to List
  • 如何重写(重新实现)QFileSystemModel 中的成员函数

    我已经为此苦苦挣扎了一段时间 Qt s QFileSystemModel由于图标获取算法非常糟糕 在获取数百个文件时速度非常慢 我想完全禁用图标 它们被提取到QFileSystemModel data方法不是虚拟的 QFileSystemM
  • 错误:C# 尝试读取或写入受保护的内存

    我很难纠正这个错误 该应用程序在 4 台不同的机器上进行了测试 在其中 3 台上运行良好 但一台 Vista PC 在尝试通过 WebBrowser1 打开页面时出现此错误 解决这个问题的任何帮助对我都会非常有帮助 System Acces
  • 如何将 IDispatch* 放入托管代码中

    我一直在考虑尝试使用 C 编写一个实现 OPOS 服务对象的 COM 对象 我已经使用自动化和 MFC 在 C 中完成了它 这并不太困难 所以我坚持尝试将其转换为一种方法 我将排除界面中的其他方法 因为它们很简单 或者我希望如此 id 6

随机推荐

  • RCP系列-第一章 环境安装

    RCP系列文章 第一章 Matlab安装 Matlab安装 RCP系列文章 前言 一 Matlab 获取 二 安装 1 解压 2 打开解压后的文件夹中的 R2018b win64 文件夹 3 鼠标右击 setup 选择 以管理员身份运行 4
  • oswatch的安装和使用

    author skate time 2011 08 06 oswatch的安装和使用 1 下载和安装 oswatch的安装与使用也比较简单 和nmon一样 都是下载后直接解压就可以使用的 oswatch是通过调用系统的命令完成信息的收集 命
  • 【Transformer系列(3)】 《Attention Is All You Need》论文超详细解读(翻译+精读)

    前言 哒哒 时隔好久终于继续出论文带读了 这次回归当然要出一手王炸呀 没错 今天我们要一起学习的就是传说中的Transformer 在2021年Transformer一经论文 Attention is All You Need 提出 就如龙
  • java数组学习

    2021 2 2 数组 一维数组的使用 1 一维数组的声明和初始化 2 如何调用数组的指定位置的元素 3 如何获取数组的长度 4 如何遍历数组 5 数组元素的默认初始化值 6 数组的内存解析 package day01 import jav
  • PyTorch-12 GAN、WGAN

    PyTorch 12 生成对抗网络 GAN WGAN 参考 https zhuanlan zhihu com p 34287744 GAN模型的目标函数如下 GAN模型优化训练 在训练过程中 生成网络的目标就是尽量生成真实的图片去欺骗判别网
  • ubuntu18.04 桌面卡死解决方法

    转载 https blog csdn net ATOOHOO article details 88169508 两个月关机 放个周末两天回来 使用系统文件夹很卡 直到因为复制文件卡死 内存和交换机空间都没满 第二次桌面又卡 因为心急 或者因
  • CUDA的下载安装

    大家好 下面将进行CUDA的下载安装 下载安装的详细步骤描述如下 1 CUDA下载 https download csdn net download qq 41104871 87462747 2 CUDA安装 1 首先 需要解压缩下载好的C
  • docker入门实践,制作Dockerfile镜像

    目前我知道的自制镜像有2种方式 根据容器制作镜像和根据Dockerfile制作镜像 根据现成的容器制作镜像 适用于已经有一个现成的容器已经满足需求的情况 docker ps a CONTAINER ID IMAGE COMMAND CREA
  • PCAP流量数据集(网络安全)

    MAWI Working Group Traffic Archive URL http mawi wide ad jp mawi CIC dataset Canadian Institute for Cybersecurity datase
  • Kmalloc

    Kmalloc内存分配和malloc相似 除非被阻塞否则他执行的速度非常快 而且不对获得空间清零 Flags参数 include
  • RabbitMQ的使用

    安装 Docker 安装 RabbitMQ docker run d name rabbitmq p 5671 5671 p 5672 5672 p 4369 4369 p 25672 25672 p 15671 15671 p 15672
  • 一文详解jwt token以及sprig boot如何整合实现 jwt token操作

    文章目录 1 jwt是什么 2 jwt的来源 2 1 传统的session认证 2 2 基于token的鉴权机制 3 JWT的构成 3 1 header 3 2 playload 3 3 signature 4 如何应用 5 spring
  • webrtc源码学习 - Track Source Sink的关系

    文章目录 1 source sink 的关系 2 Track 2 1 videotrack 的创建和使用 2 2 VideoTrack 的实现 3 Track接口类介绍 1 source sink 的关系 source是生产媒体资源的 si
  • win+R命令汇总

    我们通过WIN R 可以快速调取windows一些程序及服务 那具体有哪些命令呢 笔者总结如下 cmd cmd命令提示符 MS DOS regedit 注册表编辑器 services msc 系统服务 msconfig 系统配置实用程序 n
  • 对 Spring 的核心(AOP 和 IOC)的理解(大白话)

    Spring 首先它是一个开源而轻量级的框架 其核心容器的主要组件是Bean工厂 BeanFactory Bean工厂使用控制反转 IOC 模式来降低程序代码之间的耦合度 并提供了面向切面编程 AOP 的实现 正如其字面意思 是程序员的春天
  • 掩码、ip段转为单个ip地址,解决ValueError: IP(‘x.x.x.x/x‘) has invalid prefix length ()

    最近碰到的问题 简单记录下 from IPy import IP import re os time 解析10 245 1 1 10 245 1 10这种类型的ip段 def all for one dates ipx dates spli
  • R语言应用序列模式挖掘揭示客户购买行为:深度学习与机器学习的视角

    目录 序列模式挖掘 一个简介 使用R进行序列模式挖掘 应用深度学习和机器学习改善购买行为预测
  • 无向图的深度优先遍历非递归_数据结构系列图

    图 01 图的基本定义与基本术语 基本概念 图 Graph 是由顶点的集合和顶点之间边的集合组成 通常表示为 G V E 其中 G表示一个图 V是图G中顶点的集合 E是图G中边的集合 在图中的数据元素 我们称之为顶点 Vertex 顶点集合
  • 6.OS运行机制(补充)

    中断
  • C#的new关键字的几种用法

    一共有三种用法 在 C 中 new 关键字可用作运算符 修饰符或约束 1 new 运算符 用于创建对象和调用构造函数 这种大家都比较熟悉 没什么好说的了 2 new 修饰符 在用作修饰符时 new 关键字可以显式隐藏从基类继承的成员 3 n