C# Object及成员

来源:互联网 发布:蒜泥白肉 知乎 编辑:程序博客网 时间:2024/06/15 17:39

本文章仅为个人学习,如有错误之处请指正。

1.Object 为一切类型的基类。

2.Object是引用类型,值类型先派生自ValueType,ValueType派生自Object。

3.Object[]并不是一切数组的基类,当Object[]无法和其他数组进行隐式或者显示的类型转换,即使Object[]实际存储的为对应的类型,也是没有办法进行转换的。

4.任何数组都是引用类型,而不是值类型,int[]也是引用类型。


Object成员详解:

1.ToString()

    默认返回的是命名空间.类名。

    其实内部实现是GetType().ToString();

    其他类型的ToString()是由于重写了ToString()方法。

2.Equals(object obj)

    判断参数变量是否与该对象实例相等。

    1.值类型判断先判断是否类型相同,在判断实际存储的值是否相同。

    如果一个整数默认为int类型,当整数123与一个double类型值为123进行Equals返回false。

    2.引用类型判断的是指向的内存地址。

    3.string类型判断的字符串是否一致,并且区分大小写。

    4.如果对象实例为NULL则会抛出异常。

3. Equals(object objA, object objB)

    判断两个参数变量是否相等。

    1.值类型判断先判断是否类型相同,在判断实际存储的值是否相同。

如果一个整数默认为int类型,当整数123与一个double类型值为123进行Equals返回false。

    2.引用类型判断的是指向的内存地址。

    3.string类型判断的字符串是否一致,并且区分大小写。

    4.如果两个参数变量都为NULL则为true,变量无所谓任何类型。

4.GetHashCode()

    返回特定类型的哈希函数

5.GetType()

    返回为Type类型的对象

    返回的Type对象,实际是该实例的确切运行时类型。

    详细说明:

    当一个派生类赋值给基类的时候,基类调用GetType()返回的是派生类,表示类型指针实际指向的类型。

6.ReferenceEquals(object objA, object objB)

确定指定的 System.Object 实例是否是相同的实例。

    没有发现与Object.Equals(object objA, object objB)有任何区别

7.MemberwiseClone

创建当前 System.Object 的浅表副本,也就是浅拷贝。

    注意访问修饰词protected,只允许在其本身和派生类中使用,外界无法访问。

原创粉丝点击