日期:2014-05-18 浏览次数:20740 次
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { User u1 = new User() { ID = 1, Name = "A" }; User u2 = new User() { ID = 2, Name = "B" }; Console.WriteLine(object.ReferenceEquals(u1, u2)); Console.WriteLine(u1 == u2); Console.WriteLine(object.Equals(u1, u2)); Console.WriteLine(u1.Equals(u2)); } } class User { public int ID { get; set; } public string Name { get; set; } public override bool Equals(object obj) { return true; } } }
------解决方案--------------------
装箱和拆箱的本质并不是把值类型变成引用类型.
而是用一个引用类型的对象把值类型包装一下,真正到了使用的地方还是要拆箱的.
就是说,两个箱子,里面是一样的东西.你使用的时候是用的里面的东西,根本不会感觉到箱子的存在.但确实是两个箱子.