【.net 基础01】ReferenceEquals,Equals,==的区别
2013-12-06 11:00
211 查看
【Code】
【ReferenceEquals】
1.ReferenceEquals用于比较引用类型。
2.如果比较的是值类型(会自动装箱),则返回false。
【Equals】
1.Equals用于比较值类型和引用类型。
2.可以被子类重写。
3.如果不重写Equals方法,Equals方法效果与==一样,引用类型比较引用,值类型比较值。
4.如果重写Equals方法,需要重写GetHashcode方法,当该类作为键值对的键时,需要唯一的Hashcode,所以此时的GetHashcode方法需要被重写。
【==】
1.Equals用于比较值类型和引用类型。
2.引用类型比较引用,值类型比较值。
class Program { static void Main(string[] args) { object A = new Person { Name = "jack" }; object B = new Person { Name = "jack" }; int i1 = 1; int i2 = 1; /* * ReferenceEquals比较的是引用类型 */ // 两个参数会自动装箱,--引用不同,false Console.WriteLine(ReferenceEquals(i1, i2)); // 引用不同,false Console.WriteLine(ReferenceEquals(A, B)); /* * 如果Person类不重写Equals方法,Equals方法效果与==一样 */ // 引用类型,引用不同,false Console.WriteLine(A.Equals(B)); // 值类型,值相同,true Console.WriteLine(i1.Equals(i2)); // 引用不同,false Console.WriteLine(A == B); // 值类型,值相同,true Console.WriteLine(i1 == i2); Console.Read(); } } class Person { internal string Name; }
【ReferenceEquals】
1.ReferenceEquals用于比较引用类型。
2.如果比较的是值类型(会自动装箱),则返回false。
【Equals】
1.Equals用于比较值类型和引用类型。
2.可以被子类重写。
3.如果不重写Equals方法,Equals方法效果与==一样,引用类型比较引用,值类型比较值。
4.如果重写Equals方法,需要重写GetHashcode方法,当该类作为键值对的键时,需要唯一的Hashcode,所以此时的GetHashcode方法需要被重写。
【==】
1.Equals用于比较值类型和引用类型。
2.引用类型比较引用,值类型比较值。
相关文章推荐
- [C#基础教程]之Equals,ReferenceEquals,==的区别
- [c#基础]值类型和引用类型的Equals,==的区别
- C#中ReferenceEquals和Equals的区别
- Java基础之"=="和 和 equals 方法的区别
- Equals、ReferenceEquals、==的几点区别
- C# ==、Equals、ReferenceEquals 区别与联系
- java语言基础(52)——java == 与 equals 比较引用类型时相同与区别
- Java基础-equals 与 == 区别
- JAVA基础:“==”和“equals”的区别
- java基础——“==”与equals方法的区别
- C# ==、Equals、ReferenceEquals 区别与联系
- C#基础:Equals()与运算符==的区别分析
- .Net面试基础问答:静态成员和非静态成员的区别?
- Task C# 多线程和异步模型 TPL模型 【C#】43. TPL基础——Task初步 22 C# 第十八章 TPL 并行编程 TPL 和传统 .NET 异步编程一 Task.Delay() 和 Thread.Sleep() 区别
- .Net学习 第2季01 C#面向对象 基础
- C# ==、Equals、ReferenceEquals 区别与联系
- java基础------==和equals的区别
- 黑马程序员——JAVA基础之 == 和equals区别
- 黑马程序员_学习日记38_602基础加强(string、StringBuilder、Object.ReferenceEquals)
- 【java基础 15】java代码中“==”和equals的区别