background image

答:包括 8 个方法
公共实例方法:
Virtual bool Equals(object obj)
Virtual int GetHashCode()
Type GetType()
Virtual string toString()
公共静态方法
Bool Equals(object objA,object ojbB)
Bool referenceEquals(object ojbA, object objB)
受保护的实例方法
Object MemberwiseClone()
Finalize
System.ojbect 包 含 了 Finalize   在 内 的 8 个 方 法 。 其 中 有 3 个 虚 方 法 :
Equals,gethashcode,Tostring 方法。在设计类型时,当需要对类型对象进行内容比较时,
可以考虑重写 Equals 方法。

值类型和引用类型的区别?

答:所有继承自 system.ValueType 的类型都是值类型,而其他类型都是引用类型。值类型
的赋值会产生一个新的数据副本,所以每个值类型都拥有一个数据副本,而引用类型的
赋值则是赋值引用。值类型的对象分配在堆栈上,而引用类型的对象分配在堆上。当比较
两个值类型时,进行的是内容比较,而比较两个引用类型时,进行的是引用比较。
三个区别:

赋值区别

(将一个赋值给另一个是否会产生副本),即两个值赋值之后,改变其中一个,

另外一个是否会跟着改变。

内存分配区别

(堆(引用)和堆栈(值)的区别,堆的空间大,堆栈的空间小,但效

率高)

继承结构区别(equals 的区别)

值类型的比较方法 Equals 有了一些改变。
值类型已经实现了内容的比较,而引用类型在没有重写 Equals 方法的情况下,仍采用引
用比较。

简述

装箱

拆箱

原理

答:装箱和拆箱本质上是值类型在转换到 system.object 时引发的堆栈和堆的一系列移动
操作。装箱时值类型从堆栈上被复制到堆上,而拆箱是从堆上复制到堆栈上。装箱和拆箱
对性能有比较大的影响,应该避免任何没有必要的装箱和拆箱操作。

何为

装箱

,何为

拆箱

答:所有值类型必然都隐式地转换为 System.Object 类型,当这个转换发生时,CLR 需要
做额外的工作把堆栈上的值类型移到堆上,这个操作被称为装箱。
拆箱是装箱操作的反操作,把堆中的对象赋值到堆栈中,并且返回其值。

C#是否有全局变量?

答:没有传统意义的全局变量,在 c#程序中,任何对象数据都必须属于某个类型。通过公
共静态变量,可以实现以前全局变量的所有功能。