.net (C#) 中的比较[==] 操作符的深入理解
来源:互联网 发布:python keras 编辑:程序博客网 时间:2024/06/03 11:05
///C#中的比较[==]操作
///Author:Deney
///ps:基础演示
object o1 ; //目标对象
object o2 ; //目标对象
o1 = 1; //目标对象赋值为
o2 = 1; //目标对象赋值为
///下面应该输出False
///因为非内置对象(class 对象)的默认== (指在未重载情况下的)为引用比较
///我觉得可以理解成指针地址比较;)
Console.WriteLine(o1 == o2);
///下面输出应为True
///因为当你用o1.GetType() 来检测类型的时候,你会发现它实际的类型还是Int32。
///这样一来,当你调用Equals 的时候调用的则为实际类型Int32 类型的Equals方法了,
///此时为值比较,自然为真
Console.WriteLine(o1.Equals(o2));
o1 = o2; //在这里,我直接将两个对象作= 运算;
///下面应该输出真,原因如上,因为此时o1,o2所指向的堆数据为同一地址,故相等;
///重点,内存中。o1,o2的地址不同,但地址指向的值(引用)相同
Console.WriteLine(o1 == o2);
///值不变,值比较依然不会变化,True;
Console.WriteLine(o1.Equals(o2));
o2 = 1;
Console.WriteLine(o1 == o2);
Console.WriteLine(o1.Equals(o2));
Console.WriteLine("!!!!!!!!!!!!!!!!!!!!!!");
o1 = "1";
o2 = "1";
///这里很特殊,因为String为class对象,故string是堆存放的,
///输出为真因为== 实际上已经被string对象重载,故相等;
Console.WriteLine(o1 == o2);
Console.WriteLine(o1.Equals(o2));
o1 = o2;
Console.WriteLine(o1 == o2);
Console.WriteLine(o1.Equals(o2));
o2 = "1";
Console.WriteLine(o1 == o2);
Console.WriteLine(o1.Equals(o2));
Console.WriteLine("!!!!!!!!!!!!!!!!!!!!!!");
o1 = new object();
o2 = new object();
Console.WriteLine(o1 == o2);
Console.WriteLine(o1.Equals(o2));
o1 = o2;
Console.WriteLine(o1 == o2);
Console.WriteLine(o1.Equals(o2));
o2 = new object();
Console.WriteLine(o1 == o2);
Console.WriteLine(o1.Equals(o2));
- .net (C#) 中的比较[==] 操作符的深入理解
- 深入理解C++中的new操作符
- 深入理解 JavaScript 中的 delete 操作符
- C/C++中的一元操作符 & 和 * 的理解
- C/C++中的一元操作符 & 和 * 的理解
- 深入理解++操作符
- 深入理解.Net中的内存释放,以及有关的注意事项
- 深入理解.Net中的内存释放,以及有关的注意事项
- 深入理解C语言中的指向函数的指针!
- 对C语言中的static关键字的深入理解
- 如何理解 MySQL 中的 <=> 操作符?
- 如何理解 MySQL 中的 <=> 操作符?
- 深入理解asp.net中的 __doPostBack函数
- 深入理解asp.net中的 __doPostBack函数
- 深入理解Java原始数据类型和包装类关于==和equals的比较
- 深入理解C语言中的free函数。
- 深入理解C语言中的移位运算
- 深入理解C语言中的const
- [数据结构]第三章-栈和队列(读书笔记3)
- Review_2012_10_24
- CF-29C - Mail Stamps(DFS+离散化)
- 一个不错的网站,颜色推荐 http://www.colorhexa.com/
- C++快速入门 (十一) 类的其他内容
- .net (C#) 中的比较[==] 操作符的深入理解
- 清平乐 -- 程序员 [诗词话程序]
- JDBC中的PreparedStatement
- Decorator(装饰)模式
- switch方法重构案例
- 黑马程序员-String类
- 黑马程序员-多线程2
- 黑马程序员-多线程1
- mongodb——java封装(id自增,gridFS)