大话CLR——C#类型的秘密(没写完)

1、本相,起源,最开始的开始,万物的真相

首先告诉大家一点,在天地未分,万象都是混沌的时候,出现的第一个类是什么?CLR要求每一个类都要从System.Object中派生出来,所有的类型都最终继承于System.Object,也就是说System.Object是所有类的爹。

实际上就是如下

俺英语也不好,但是俺也能明白大概意思,就是vs会告诉你,你这么做是多余的,憋整那多余的功夫了

因为所有的类都是派生于System.Object,那自然而然的,所有的类不需要任何操作,就将获得最初的四个【新手礼包】即System.Object的四个public方法

Equals

如果两个对象一致,就返回True

GetHashCode

获得对象的哈希码

Tostring

默认的时候是返回类型的完整名称(this.GetType().FullName),但是经常重写该方法来返回包含对象状态表示的String对象。例如Int32和BooLean的tostring

GetType

返回从Type派生的一个类型的实例;这个实例指出调用这个方法的对象是什么类型(描述这个类是个啥东西,反射时候有用)

2、new一个对象的时候发生甚么事了?

clr 要求所有的对象都要用new来创建(废话),但是这个new做了啥,你知道吗?

 Student student= new Student();
  1. 计算类型以及所有的基类型(将从儿子计算完了,再计算他爹,再是他爷爷,太爷爷……一直到System.Object)的所有的实例的字段所需要的字节数。堆上每个对象呢,都需要额外的成员,包括类型对象指针和同步块索引,CLR利用这些成员管理对象。这些额外的成员的字节也是要计入对象的大小的。

C# CLR via 对象内存中堆的存储【类型对象指针、同步块索引】 - 大稳·杨 - 博客园 (cnblogs.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值