zoukankan      html  css  js  c++  java
  • 04.类型基础

         所有类型都从System.Object派生
     
        Object类型的公开方法
        Equals、GetHashCode、GetType、ToString
     
        Object类型的受保护方法
        MembervieseClone、Finalize
        
        new操作符所做的事情
        1.它计算类型和它的所有基类中定义所有字段需要的字节数
        2.它从托管堆中分配指定类型要求的字节数,从而分配对象的内存,分配的所有字节都设为零
        3.初始化对象的成员
        4.调用类型的构造函数
        5.返回新建对象的引用
     
        类型转换
        CLR允许将一个对象转换成它的(实际)类型或者它的任何基类型
         向基类型转换是一种安全的隐式转换,然而将其转换成派生类时则需要显式地转换
     
        使用C#的is和as操作符来转型
        is检查一个对象是否兼容于指定的类型,并返回一个bool值,is操作符永远不会抛出异常
        使用as操作符,则CLR检查类型可以减少检查一次,提高系统的性能
        as操作符的工作方式与强制类型转换一样,如果不能转换,则返回一个null
     
        命名空间和程序集不一定是相关的
     
        运行时的相互联系
        类型、对象、线程栈和托管堆
        栈是从高位内存地址到低位内存地址构建的
        调用一个方法时,还会将一个"返回地址"压入栈,被调用的方法结束之后,应该返回这个位置
     
        将数据存放于堆中
        检查内部所有的引用类型,确保对应的程序集被加载,通过程序集中的元数据,CLR会提取这些类型的相关信息,并创建一些结构表示类型本身,并存放于堆中
        
        堆上的所有对象都包含两个额外的成员:类型对象指针和同步块索引
     
      调用一个非虚实例方法时,JIT编译器会查询该类型中的方法表,如果没有找到,则会向上查询,查询该类型的基类是否包含这个方法,一直找到Object类型
        调用一个虚方法时,JIT编译器会生成额外的代码,通过这些代码检查发出调用的变量,代码检查类型对象指针,这个成员指向对象的实际类型,在该类型对象中查找调用的方法
     
     
     
  • 相关阅读:
    异步非阻塞
    jdbc简单入门
    网络编程
    多线程
    java方法
    java之面向对象
    java-多线程
    Java之反射机制
    使用C#完成冒泡排序
    TextEdit不能空验证设置
  • 原文地址:https://www.cnblogs.com/a2htray/p/4558236.html
Copyright © 2011-2022 走看看