NET基础:类型基础

Posted sunyj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NET基础:类型基础相关的知识,希望对你有一定的参考价值。

所有类型都从System.Object 派生,‘运行时’要求每个类型都从System.Object类派生,也就是说,以下两个类型定义完全一致:

//隐式派生字Object
class Employee
{
   do something.....
}

//显式派生字Object
 class Employee:System.Object
{
   do something.....
}

由于所有类型最终都是从System.Object派生,所以每个类型的每个对象都保证了一组最基本的方法,System.Object提供了一下公共实例方法:

1、Equals:如果两个对象具有相同的值,就返回true。

2、GetHashCode:返回对象的值的哈希。

3、ToString:默认返回类型的完整名称(this.GetType().FullName).

4、GetType:返回Type派生的一个类型的实例,指出调用GetType的那个对象是什么类型。返回的Type对象可以和反射类配合,获取与对象的类型有关的元数据信息。

 

CLR要求所有的对象都使用New关键字创建,以下代码展示了如何创建一个Employee对象:

Employee e = new Employee("ConstructorParameter");

以下是New操作符所做的事情

1、计算类型及其所有的基类型(一直到System.Object,虽然他没有定义自己的实例字段)中定义的所有实例需要的字节数,堆上每个对象都需要一些额外的成员,包括类型对象指针(type object poniter) 和 同步块索引(sync block index)。CLR利用这些成员管理对象,额外成员的字节要计入成员的大小。

2、从托管堆中分配类需要的字节数,从而分类对象的内存,分配所有的字节都设为零。

3、初始化对象的“类型对象指针”和“同步索引块”成员。

4、调用类型的实例构造器,传递在New调用中指定的实参。

 

new执行了所有这些操作之后,返回指向新建对象的一个引用(指针)。

注: 没有和New操作符对应的delete操作符:换言之没有办法显式的释放为对象分配的内存,CLR采用了垃圾回收机制(GC)自动检测到一个对象不再被使用和被访问,并自动释放对象的内存。

 

以上是关于NET基础:类型基础的主要内容,如果未能解决你的问题,请参考以下文章

.NET基础拾遗类型语法基础和内存管理基础1

NET基础:类型基础

.NET基础拾遗类型语法基础和内存管理基础2

C#入门基础语法知识点总结(.NET开发环境及代码编写规范)

java基础3-重载+命令行传参+递归+数组+排序

类型语法基础和内存管理基础