• c# 基础 object ,new操作符,类型转换


    所有类型最终都从System.Object类型派生。

    最基本方法(object的公共方法):

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

    2.GetHashCode:返回对象值得一个哈希码,如果某个类型的对象要在一个哈希表集合众作为key使用,该类型应重写该方法。

    3.ToSting,返回一个String对象

    4.GetType:返回从Typt派生的一个对象实例,指出该对象是什么类型。返回的type对象可以和反射类配合使用,从而获取与对象的类型有关的元数据信息。

    以下为受保护的方法

    5.MemberwiseClon:非虚方法,能创建类型的一个新实例,并将新对象的实例字段设与this对象的实例字段完全一致,返回的是一个对新实例的一个引用。

    6.Finalize:在垃圾回收时会调用该虚方法。

    关于new操作符  曹衍涛

    Employee e=new Employee("ConstructorParam1");

    1.他计算类型及其所有基类型中定义的所有实力字段需要的字节数。 堆上每一个对象都需要一些额外成员——“类型对象指针(type object pointer)

    ”和“同步索引块(sync block index)”,这些成员由ClR(common language runtime)用于管理对象。这些额外成员的字节数会计入对象大小。

    2.他从托管堆中分配制定类型要求的字节数,从而分配对象的内存,分配的所有字节都设为零。

    3.他初始化对象的类型对象指针和同步索引成员。

    4.调用类型的实例构造器,向其传入在对new的调用中制定的任何实参。(上边ConstructorParam1即为实参)

    new执行完这些操作后会返回指向新建对象一个引用(或指针)。上边这个引用会保存到变量e中,后者具有Employee类型

    无法显示释放分配给一个对象的内存,CLR采用垃圾回收机制。

    类型转换

    CLR最重要的特性之一就是类型安全性。

    c#可以随意将一个对象转换为他的任何基类,当将该类型转化为他的派生类时需要进行显示转换,该转换可能会在运行时失败。

    使用is和as操作符来转型

    is检查一个对象是否兼容于指定类型,返回true或false,is操作符不会抛出异常。

    Object o=new Object();

    Boolean b1 =(o is Object)//返回true

    Boolean b2 =(o is Employee)//返回false

    如果对象引用为null,总是返回false

    is通常这样使用

    if(o is Employee)

    {

    Employee e=(Employee) o;

    //在if剩余语句中用e

    }

     这样写CLR实际检查了两遍数据类型

    as为其简化写法

    Employee e= o as Employee;

    if(e!=null)

    {

    //剩余语句用e

    }

    这样写CLR检查o是否兼容Employee,是的话返回同一对象的非null引用。

  • 相关阅读:
    SVN集中式版本控制器的安装、使用与常见问题汇总
    Angular指令渗透式理解
    Angular双向数据绑定MVVM以及基本模式分析
    Angular自定义指令(directive)
    Angular作用域的层级概念(scope)
    json 序列化
    cookies session 知识点
    mvc基础知识
    cookies 练习1
    MySQL教程
  • 原文地址:https://www.cnblogs.com/lanrenqilanming/p/6256858.html
Copyright © 2020-2023  润新知