我知道等式检查的语义是根据你是检查值类型还是引用类型而改变的。引用类型不只是一个更高级别的指针吗?使用引用类型时到底发生了什么?所有的取消引用、向上转换等现在都是由运行时处理的吗?
发布于 2009-12-21 13:15:32
是的,确切地说,引用类型只是指向由垃圾收集器管理的内存的“指针”。
C++:
MyClass* mc = new MyClass();
Myclass* mc2 = mc;
mc == mc2 // true, points at the same memory addressC#:
MyClass mc = new MyClass();
MyClass mc2 = mc;
mc == mc2 // also true for the same reason发布于 2009-12-21 13:11:05
引用类型的C#相等运算符检查两个操作数是否引用同一对象,除非相等运算符被重写:
http://msdn.microsoft.com/en-us/library/53k8ybth.aspx
有关Object.Equals和相等运算符==的更多信息,请查看此处:
http://msdn.microsoft.com/en-us/library/ms173147.aspx
发布于 2009-12-21 13:06:37
点击这里:http://www.albahari.com/valuevsreftypes.aspx
https://stackoverflow.com/questions/1938301
复制相似问题