C# new操作符的作用
CLR要求所有对象(实例)都用new操作符创建,那么new操作符做了哪些事呢?
1. 计算字节数
计算类型及其所有基类型(父类)中定义的所有实例字段需要的字节数。堆上每个对象都需要一些额外的成员,包括“类型对象指针”和“同步块索引”。CLR利用这些成员管理对象。
2. 给对象分配内存
从托管堆中分配类型要求的字节数,从而分配对象的内存,分配的所有字节都设为0.
3. 初始化对象的“类型对象指针”和“同步索引块”成员
4. 传递参数
调用类型的实例构造器,传递在new调用中指定的实参
5. new执行了所有操作之后,返回指向新建对象一个引用,也叫指针
C#中的new实例化有什么作用?
一、new 运算符:用于创建对象 给对象申请地址空间和调用构造函数给对象初始化。
比如,窗口的跳转
form1 f=new form1();
f.show();
平时只知道照做,并不了解为什么要这样操作。
多了解下底层的东西,从计算机系统来说,new是向系统申请一块存储空间,来存放相关的【执行代码】和【数据】,show就是在这块空间上分配的执行代码。
这段话的意思说:向操作系统申请一块空间,在这个空间上分配了form1的执行代码和数据,这个空间的起始地址赋值给f,f.show()就是从f的位置起找到【执行代码】show的位置上去执行,于是就有了后面的一些情况的发生。
2、new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。
public class Program: BaseClass
{
new public class Test//2、new修饰符 显式隐藏从基类继承的成员
{
public int x = 2;
public int y = 20;
public int z = 40;
} static void Main(string[] args)
{
var c1 = new Test();//1、new操作符 创建对象和调用构造函数
var c2 = new BaseClass.Test();
Console.WriteLine(c1.x);//2
Console.WriteLine(c2.y);//10
Console.ReadKey();
}
} public class BaseClass
{
public class Test
{
public int x = 0;
public int y = 10;
}
}
C# new操作符的作用的更多相关文章
- 立即表达式的多种写法与注意点以及in操作符的作用
立即表达式,在javascript中非常常见, 采用立即表达式可以形成一个局部作用域, 常配合闭包实现模块化编程等其他用途,接下来我们看看,在大多数的框架中,立即表达式都有哪些写法,以及需要注意的点, ...
- javascript中加号(+)操作符的作用
// 16进制转换:+”0xFF”; // -> 255 // 获取当前的时间戳,相当于`new Date().getTime()`:+new Date(); // 比 ...
- 关于UNPIVOT 操作符
UNPIVOT 操作符说明 简而言之,UNPIVOT操作符就是取得一个行的数据集合,然后把每一行都转换成多个行数据.为了更好地理解,请看下图: 图1 从上图中,你能发现UNPOVOT操作符,取得了两行 ...
- java基础-操作符
浏览以下内容前,请点击并阅读 声明 定义:操作符是一种能够对一个,两个或三个操作对象执行特定的操作,并返回一个结果的特定符号. java中操作符的种类和优先级如下表所示,除了赋值运算,所有二元操作符运 ...
- S1:new操作符
function Shape(type){ this.type = type || "rect"; this.calc = function(){ return "cal ...
- Linux中命令链接操作符的十个最佳实例
转载: http://www.linuxeden.com/html/softuse/20140112/147406.html http://www.tecmint.com/chaining-opera ...
- C# 关于NULL 可空值类型 ? 和空接操作符??
作者 陈嘉栋(慕容小匹夫) C#引入了可空值类型的概念.在介绍究竟应该如何使用可空值类型之前,让我们先来看看在基础类库中定义的结构--System.Nullable<T>.以下代码便是Sy ...
- js操作符总结
算数操作符加法操作符(+),减法操作符(-),除法操作符(/),乘法操作符(*)还可以把多种操作组合在一起:1+4*5避免产生歧义,可以用括号把不同的操作分隔开来:1+(4*5):(1+4)*5变量可 ...
- 《JavaScript高级程序设计》读书笔记 ---操作符一
一元操作符只能操作一个值的操作符叫做一元操作符.一元操作符是ECMAScript 中最简单的操作符. 1. 递增和递减操作符递增和递减操作符直接借鉴自C,而且各有两个版本:前置型和后置型.顾名思义,前 ...
随机推荐
- pytest文档1-环境搭建
1.安装方法 pip install -U pytest 2.查看安装版本 pip show pytest pytest -version 3.快速开始 新建test开头py文件 打开test_sam ...
- redis如何避免释放锁时把别人的锁释放掉
场景:假如线程A获取分布式锁进入方法A,由于某种原因Hang住了 到了指定时间释放锁,这个时候线程B进入得到锁,这个时候线程B很顺利完成业务逻辑操作,然后释放掉锁,就在这个时候线程A开始继续往下执行代 ...
- 中招了,重写TreeMap的比较器引发的问题…
需求背景 给一个无序的map,按照value的值进行排序,value值越小,排在越前面. key和value都不为null value可能相同 返回结果为一个相同的有序map 代码如下所示: 1 // ...
- 运维利器-ClusterShell集群管理
在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...
- python 小兵(1)
变量规则 1.只能以数字,字母,下划线命名 2.不能使用数字开头 3.不能使用python关键字 4.不建议用拼音或中文 5区分大小写 6推荐使用驼峰,下划线 全部大写是常量 注释 # 单行注释 (当 ...
- PostgreSQL逻辑订阅
测试环境:PostgreSQL 13.2 1.逻辑订阅简介 由于物理复制只能做到这个集群的复制,不能正对某个对象(表)进行复制,且物理复制的备库只能读,不能写.相反,逻辑订阅同时支持主备库读写,且可以 ...
- 微信小程序之多选功能
思路:把向得到的数组中添加一个布尔值,默认都为false,然后通过数组的映射功能把选中的布尔值,存储到数组中,在组件属性中,用三元运算符做判断即可 data:{ sampleArray: [{ id: ...
- 2019年1月9日 ES6 学习心得
ES6为我们创建对象提供了新的语法糖,这就是Class语法.如果你对ES5中面向对象的方式比较熟悉的话,Class掌握起来也是非常迅速的,因为除了写法的不同,它并不会增加新的难以理解的知识点.我们先利 ...
- ubuntu 修改文件及文件夹的权限
转载请注明来源:https://www.cnblogs.com/hookjc/ 打开终端进入你需要修改的目录然后执行下面这条命令chmod 777 * -R全部子目录及文件权限改为 777 来源:py ...
- SpringBeanUtils的部分方法类
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/12060553.html SpringBeanUtils的部分方法类: import java. ...