本文章仅为个人学习,如有错误之处请指正。
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,只允许在其本身和派生类中使用,外界无法访问。