int m1 = 2; int m2 = 2; Console.WriteLine(m1 == m2);//值比较True Console.WriteLine(m1.Equals(m2));//值比较True Console.WriteLine(System.Object.ReferenceEquals(m1, m2));//引用False
object m1 = 2; object m2 = 2; Console.WriteLine(m1 == m2);//引用类型引用比较False Console.WriteLine(m1.Equals(m2));//Object虚方法值比较True Console.WriteLine(System.Object.ReferenceEquals(m1, m2));//引用False
int m1 = 3434; int m2 = m1; Console.WriteLine(m1 == m2);//值比较True Console.WriteLine(m1.Equals(m2));//值比较True Console.WriteLine(System.Object.ReferenceEquals(m1, m2));//引用比较False
object m1 = 2; int m2 = 2; Console.WriteLine(m1.Equals(m2));//Object虚方法值比较True Console.WriteLine(System.Object.ReferenceEquals(m1, m2));//引用False
string m1 = "tg903eiotf38"; string m2 = "tg903eiotf38"; Console.WriteLine(m1 == m2);//字符串值比较True Console.WriteLine(m1.Equals(m2));//字符串值比较True Console.WriteLine(System.Object.ReferenceEquals(m1, m2));//字符串引用优化比较True
现有一class:
public class Student { public long Id { get; set; } public string Name { get; set; } }
Student m1 = new Student() { Id = 34, Name = "朝野布告", }; Student m2 = new Student() { Id = 34, Name = "朝野布告", }; Console.WriteLine(m1 == m2);//False Console.WriteLine(m1.Equals(m2));//False Console.WriteLine(System.Object.ReferenceEquals(m1, m2));//False
Student m1 = new Student() { Id = 34, Name = "朝野布告", }; Student m2 = m1; Console.WriteLine(m1 == m2);//True Console.WriteLine(m1.Equals(m2));//True Console.WriteLine(System.Object.ReferenceEquals(m1, m2));//True
Student m1 = new Student() { Id = 34, Name = "朝野布告", }; Student m2 = m1; m1.Name = "飓风"; Console.WriteLine(m1 == m2);//True Console.WriteLine(m1.Equals(m2));//True Console.WriteLine(System.Object.ReferenceEquals(m1, m2));//True Console.WriteLine(m1.Name);//飓风 Console.WriteLine(m2.Name);//飓风
object m1 = new Student() { Id = 34, Name = "朝野布告", }; object m2 = m1; Console.WriteLine(m1 == m2);//True Console.WriteLine(m1.Equals(m2));//True Console.WriteLine(System.Object.ReferenceEquals(m1, m2));//True
原文:http://www.cnblogs.com/huangsheng/p/6490578.html