C# 中的装箱、拆箱、对象比较与运算符重载
1. 装箱与拆箱
装箱是将值类型转换为引用类型的过程,这个转换可以隐式发生,也能手动执行。示例代码如下:
int i = 20;
object o = i;
拆箱则是将先前装箱的值类型的值转换回值类型的过程,必须显式进行。示例代码如下:
int i = 20;
object o = i; // 装箱操作
int j = (int)o; // 拆箱操作
需要注意的是,只能对先前已装箱的变量进行拆箱。若在 o
不是装箱的 int
时执行拆箱操作,运行时会抛出异常。另外,拆箱时要确保接收值的变量有足够空间存储被拆箱值的所有字节,例如将 long
类型的值(64 位)拆箱为 int
类型(32 位)会导致 InvalidCastException
异常:
long a = 333333423;
object b = (object)a;
int c = (int)b;
2. 对象相等性比较
2.1 引用类型的相等性比较
在比较引用类型的对象时,有四种方式来判断对象是否相等:
- Re