"=="对于值类型来说是值比较,string是被微软处理过,所以微软把string当成值类型来看,
所以第一个为true
第三个也好解释,就是当你把a1和a2进行了Object装箱,
这个时候的b1和b2是引用类型使用"=="比较的是内存地址
两个object当然不会是同一个内存地址就的False
a1,a2 是 String 变量 ,C# 重载了运算符 "==" 和方法Equals ,系统解析的时候会直接比较String 的内容。
b1 和 b2 系统会认为是 Object ,虽然实际的类型是String,但系统仍会按Object 处理
“==” 判定的是 是否指向同一个Object 的实例。
“Equals” 判定的是两个Object 是否是同一种类型。