在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
两个对象是否为同一个对象:是看两个对象是否指向堆中的同一块内存。 1、使用object.ReferenceEquals() class Program { static void Main(string[] args) { Person p1 = new Person(); p1.Name = "Mark"; Person p2 = new Person(); p2.Name = "Marl"; Person p3 = p1; Console.WriteLine(object.ReferenceEquals(p1,p2)); Console.WriteLine(object.ReferenceEquals(p1,p3)); } class Person { public string Name { get; set; } } } 2.使用object.equals() class Program { static void Main(string[] args) { Person p1 = new Person(); p1.Name = "Mark"; Person p2 = new Person(); p2.Name = "Marl"; Person p3 = p1; Console.WriteLine(p1.Equals(p2)); Console.WriteLine(p1.Equals(p3)); } class Person { public string Name { get; set; } } } 3、使用== 得到同样的结果。 目前来看,这三个方法都能判断两个对象是否为同一个对象。但是: static void Main(string[] args) { string s1 = new string(new char[] { 'a', 'b' }); string s2 = new string(new char[] { 'a', 'b' }); Console.WriteLine(s1==s2);//true Console.WriteLine(s1.Equals(s2));//true Console.WriteLine(object.ReferenceEquals(s1,s2));//false } 这两个s1,s2是两个不同的对象,因为new了两次,在堆中存在两块不同的内存。 总结: Equals:内部是判断两个对象中的值是否一样。 ==:内部还是调用的equals方法,所以应该同上。 所以用第一种。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论