C# 中 equals( ) 和 == 的区别和用法
Equals:
下面的语句中,x、y 和 z 表示不为 null 的对象引用。
* 除涉及浮点型的情况外,x.Equals(x) 都返回 true。
* x.Equals(y) 返回与 y.Equals(x) 相同的值。
* 如果 x 和 y 都为 NaN,则 x.Equals(y) 返回 true。
* 当且仅当 x.Equals(z) 返回 true 时,(x.Equals(y) && y.Equals(z)) 才返回 true。
* 只要不修改 x 和 y 引用的对象,对 x.Equals(y) 的相继调用将返回相同的值。
* x.Equals(null) 返回 false。
==:
对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。
对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。
对于 string 类型,== 比较字符串的值。
Equals与==的区别
"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
而字符串是一个特殊的引用型类型,在C#语言中,重载了string 对象的很多方法方法(包括equals
总结如下:
1、对于值类型,==和equals等价,都是比较存储信息的内容。
2、对于引用类型,==比较的是引用类型在栈中的地址,equals方法则比较的是引用类型在托管堆中的存储信息的内容。
using System; namespace EqualsTest
{
class EqualsTest
{
static void Main(string[] args)
{
//值类型
int x = ;
int y = ;
Console.WriteLine(x == y);//True
Console.WriteLine(x.Equals(y));//True //引用类型
A a = new A();
B b = new B();
//Console.WriteLine(a==b);//报错
Console.WriteLine(a.Equals(b));//False //字符串(最像值类型的引用类型)
string m = "";
string n = "";
Console.WriteLine(m==n);//True
Console.WriteLine(m.Equals(n));//True //结构体(最像引用类型的值类型)
T t = new T();
V v = new V();
//Console.WriteLine(t == v);//报错
Console.WriteLine(t.Equals(v));//True Console.Read(); }
} class A { public int X = ; } class B { public int X = ; } struct T { int X; } struct V { int X; } }
原址:https://blog.csdn.net/studyofnet/article/details/16842235
https://www.cnblogs.com/9cct/p/7749358.html
C# 中 equals( ) 和 == 的区别和用法的更多相关文章
- java中equals和==的区别 (转)
java中equals和==的区别 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引 ...
- 【转】Java中equals和==的区别
[转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boole ...
- C#中 Equals和= =的区别
C#中 Equals和= =的区别 前言:最近感觉技术进步实在是太慢,一直被游戏缠身不能自拔哈哈,但是游戏打多了真的是感觉整个人浮躁的不行,所以我现在要去游戏多写代码多看书,今天在博客园中看到一个前辈 ...
- (转)Java中equals和==的区别
java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号( ...
- Java 中 Equals和==的区别(转)
另外一篇参考: https://blog.csdn.net/striverli/article/details/52997927 在谈论equals和==的区别前,我们先简单介绍一下JVM中内存分配的 ...
- Java中equals和==的区别?为什么重写equals方法后,一定要重写hashCode方法?
首先明确一点,equals是方法,==是操作符. 1. 如果比较的是基本数据类型: 只讨论==,因为equals是不存在的,因为java中基本数据类型不能调用method的. 2. 如果比较的是引用类 ...
- java中equals和==的区别详解
java中的数据类型,可分为两类: 1.基本数据类型. byte,short,char,int,long,float,double,boolean这八大原始数据类型他们之间的比较,使用“==”,比较的 ...
- Mabitis中的#与$符号区别及用法介绍
这篇文章主要介绍了Mabitis中的 #{}与 ${} 符号区别,需要的朋友可以参考下 一.介绍 mybatis 中使用 Mapper.xml里面的配置进行 sql 查询,经常需要动态传递参数,例 ...
- C#中equals和==的区别有哪些
本文导读:C# 中==是用来判断变量的值是否相等,相等返回true,不相等返回false.Equals是用来判断两个对象(除string类型外)是否相等,相等的 条件是:值,地址,引用全相等,因为St ...
随机推荐
- python——在文件存放路径下自动创建文件夹!
1.a.py文件存放的路径下为(D:\Auto\eclipse\workspace\Testhtml\Test) 2.通过os.getcwd()获取的路径为:D:\Auto\eclipse\works ...
- 面试题:求第K大元素(topK)?
一.引言二.普通算法算法A:算法B:三.较好算法算法C:算法D:四.总结 一.引言 这就是类似求Top(K)问题,什么意思呢?怎么在无序数组中找到第几(K)大元素?我们这里不考虑海量数据,能装入内 ...
- php SESSION入库的实现
session入库,就是重写session制机,在session的周期内,获得到session的数据并记录到数据库 Session默认是存放到服务器上的文件中,不方便管理,如果能把session存放到 ...
- Oracle执行计划学习笔记
目录 一.获取执行计划的方法 (1) explain plan for (2) set autotrace on (3) statistics_level=all (4) dbms_xplan.dis ...
- PHP学习笔记 01 之表单传值
一.HTML传值/PHP接收方法 1.GET(地址栏+问号+数据信息) (1)方式一:表单Form: method = 'get' GET接收数据方式: $_GET['表单元素name对应的值] (2 ...
- ASP.NET Core 实战:构建带有版本控制的 API 接口
一.前言 在上一篇的文章中,主要是搭建了我们的开发环境,同时创建了我们的项目模板框架.在整个前后端分离的项目中,后端的 API 接口至关重要,它是前端与后端之间进行沟通的媒介,如何构建一个 “好用” ...
- 浅析一款扫描dom-xss的浏览器插件
目录 0x00 前言 0x01 浅析 0x00 前言 这款插件的名字叫 ra2-dom-xss-scanner,其作者刚好也是jsprime的开发者,后续有可能会继续跟进一下jsprime.这个ra2 ...
- SpringBoot进阶教程(二十五)整合Redis之@Cacheable、@CachePut、@CacheEvict的应用
在上一篇文章(<SpringBoot(二十四)整合Redis>)中,已经实现了Spring Boot对Redis的整合,既然已经讲到Cache了,今天就介绍介绍缓存注解.各家互联网产品现在 ...
- Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...
- Flannel工作原理
flanneld程序启动会有一个参数叫做-etcd-prefix和-iface.前者是指定flanneld程序使用etcd的哪个节点来存储数据,-face是指定flanneld使用网络是使用宿主机哪个 ...