判断两个对象是否是同一个对象 | Equals | ReferenceEquals |== | string 类是一个特殊的类
来源:互联网 发布:小型图书馆源码 编辑:程序博客网 时间:2024/03/29 19:26
《1》
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 判断两个变量是否为同一个对象{ public class Person { public string Name { get; set; } public int Age { get; set; } public string Email { get; set; } } class Program { static void Main(string[] args) { Person p1 = new Person() { Name = "张三", Age = 20, Email = "123@qq.com" }; Person p2 = new Person() { Name = "张三", Age = 20, Email = "123@qq.com" }; //因为p1和p2都是各自new的对象。所以p1与p2并不是同一个对象,所以他们不“相等” Console.WriteLine(p1 == p2); //输出:false Console.WriteLine(p1.Equals(p2)); //输出:false Console.WriteLine(ReferenceEquals(p1, p2)); //输出:false //此时p1是指向p2的引用。所以,他们指向的内存都是同一块内存,所以他们“相等” p1 = p2; Console.WriteLine(p1 == p2); //输出:true Console.WriteLine(p1.Equals(p2)); //输出:true Console.WriteLine(ReferenceEquals(p1, p2)); //输出:true //---------------下面我们来看一个特殊的类 string 字符串类----------------// //其实此时的s1和s2都是指向同一块内存。所以他们“相等” string s1 = "abc"; string s2 = "abc"; Console.WriteLine(s1 == s2); //输出:true Console.WriteLine(s1.Equals(s2)); //输出:true Console.WriteLine(ReferenceEquals(s1, s2)); //输出:true //s3与s4是各自new的一个对象,所以他们是两块不同的内存 ........可是问题出现了,看下面的输出: string s3 = new string(new char[] { 'a', 'b', 'c' }); string s4 = new string(new char[] { 'a', 'b', 'c' }); //对于string类来说,重载了Equals()方法,在这个重载方法中其实是判断两个字符串的字符是否完全一样,如果一样就返回true,并不是判断两个对象是否为同一个对象。 //并且sring类也重写了object类中的Equals方法,在该方法中也是判断的两个字符串中的字符串是否完全一样,如果一样就返回true,并不是判断两个对象是否为同一个对象。 //在字符串类中,有一个操作符重载,它是对==这个操作费进行了重载,在string类中 ==其实就是一个名字为==的方法 ,在这个方法中也是对字符串内容做了判断(其实在它里面也是调用的Equals方法)所以在string类中,==表现出了与Equals()方法同样的作用。 Console.WriteLine(s3 == s4); //输出:true Console.WriteLine(s3.Equals(s4)); //输出:true //总结:使用ReferenceEquals()始终可以准确的验证,两个变量是否指向同一个对象 Console.WriteLine(ReferenceEquals(s3, s4)); //输出:false Console.ReadKey(); } }}
- 判断两个对象是否是同一个对象 | Equals | ReferenceEquals |== | string 类是一个特殊的类
- 判断比较两个对象是否是一个对象(equals方法)
- Jquery判断两个object是否是同一个对象
- HashSet 中储存先判断对象的hash值 如果一样 在调用 对象equals方法判断是否是同一个对象
- HashSet 中储存先判断对象的hash值 如果一样 在调用 对象equals方法判断是否是同一个对象
- 如何判断两个jq对象是同一个对象
- 【OC学习-15】如何判断两个对象是否属于同一个类?如何判断一个对象是否属于某一个类?
- iphone上面判断一个对象是否是某个类的对象的方法
- Swift - 如何判断一个对象是否是某个类
- 如何判断两个COM指针是同一个对象
- js判断两次点击是否是同一个对象
- Android判断同一个类的两个对象的内容是否相同
- 判断一个对象是否是数组
- 判断一个js对象是否是Array
- Swift:如何判断一个对象是否是某个类(或其子类)的实例
- 如何判断一个对象是否是基本类型的Wrapper
- 如何判断一个对象是否是基本类型的Wrapper
- 判断一个对象是否是另一个的前缀
- 飘逸的python - 性能调优利器profile及其意义
- jquery, json与ashx的完美结合
- 修改Eclipse启动图标
- 矩阵算法模板
- xml 转xsd->xsd转c,c++
- 判断两个对象是否是同一个对象 | Equals | ReferenceEquals |== | string 类是一个特殊的类
- Marklogic search development -1.Developing Search Applications in MarkLogic Server
- Ajax长连接
- Objective-C ,ios,iphone开发基础:自定义控件:Eg: UIButton
- HDU_4701_Game
- 实现FusionChart动态获取数据(二)
- 关系模型的基本概念
- N个筛子,掷出M值的可能性
- 2013.8.25