zoukankan      html  css  js  c++  java
  • NET基础(1):类型基础

    所有类型都从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)自动检测到一个对象不再被使用和被访问,并自动释放对象的内存。

  • 相关阅读:
    产品经理做产品设计的九步法
    产品经理要懂多少技术?
    产品经理如何注重细节意识的培养
    产品经理如何在技术人员面前更有说服力?
    从程序员到项目经理:每个人都是管理者
    我的人才管理方式
    一个关于内部类的小例子
    java中的全局变量与静态变量的区别与联系?有时候为什么专门定义静态变量。(标题党~~)
    举一反三,一小步。
    中国移动的企业文化 ,以及中国移动都有那些业务?
  • 原文地址:https://www.cnblogs.com/sunyj/p/5537475.html
Copyright © 2011-2022 走看看