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( ) 和 == 的区别和用法的更多相关文章

  1. java中equals和==的区别 (转)

    java中equals和==的区别  值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引 ...

  2. 【转】Java中equals和==的区别

    [转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boole ...

  3. C#中 Equals和= =的区别

    C#中 Equals和= =的区别 前言:最近感觉技术进步实在是太慢,一直被游戏缠身不能自拔哈哈,但是游戏打多了真的是感觉整个人浮躁的不行,所以我现在要去游戏多写代码多看书,今天在博客园中看到一个前辈 ...

  4. (转)Java中equals和==的区别

    java中的数据类型,可分为两类:  1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean    他们之间的比较,应用双等号( ...

  5. Java 中 Equals和==的区别(转)

    另外一篇参考: https://blog.csdn.net/striverli/article/details/52997927 在谈论equals和==的区别前,我们先简单介绍一下JVM中内存分配的 ...

  6. Java中equals和==的区别?为什么重写equals方法后,一定要重写hashCode方法?

    首先明确一点,equals是方法,==是操作符. 1. 如果比较的是基本数据类型: 只讨论==,因为equals是不存在的,因为java中基本数据类型不能调用method的. 2. 如果比较的是引用类 ...

  7. java中equals和==的区别详解

    java中的数据类型,可分为两类: 1.基本数据类型. byte,short,char,int,long,float,double,boolean这八大原始数据类型他们之间的比较,使用“==”,比较的 ...

  8. Mabitis中的#与$符号区别及用法介绍

    这篇文章主要介绍了Mabitis中的 #{}与   ${} 符号区别,需要的朋友可以参考下 一.介绍 mybatis 中使用 Mapper.xml里面的配置进行 sql 查询,经常需要动态传递参数,例 ...

  9. C#中equals和==的区别有哪些

    本文导读:C# 中==是用来判断变量的值是否相等,相等返回true,不相等返回false.Equals是用来判断两个对象(除string类型外)是否相等,相等的 条件是:值,地址,引用全相等,因为St ...

随机推荐

  1. Postman----request的body中实现数据驱动

    使用场景: 一个接口多次执行,要求body中的某个参数在每次运行时都要填写不同的值,根据不同值的传入,返回不同的结果 参考示例:通过接口测试创建5条待办名称不一样的待办事项.名称格式不作要求 解决方法 ...

  2. djiango的模板语言(template)

    老师的博客:http://www.cnblogs.com/liwenzhou/p/7931828.html 官方文档:https://docs.djangoproject.com/en/1.11/re ...

  3. FOFA爬虫大法——API的简单利用

    FOFA是一款网络空间搜索引擎,它通过进行网络空间测绘,帮助研究人员或者企业迅速进行网络资产匹配,例如进行漏洞影响范围分析.应用分布统计.应用流行度等. 何为API?如果你在百度百科上搜索,你会得到如 ...

  4. MySQL 复制 - 性能与扩展性的基石 3:常见问题及解决方案

    主备复制过程中有很大可能会出现各种问题,接下来我们就讨论一些比较普遍的问题,以及当遇到这些问题时,如何解决或者预防问题发生. 1 数据损坏或丢失 问题描述:服务器崩溃.断电.磁盘损坏.内存或网络错误等 ...

  5. go语言调度器源代码情景分析之一:开篇语

    专题简介 本专题以精心设计的情景为线索,结合go语言最新1.12版源代码深入细致的分析了goroutine调度器实现原理. 适宜读者 go语言开发人员 对线程调度器工作原理感兴趣的工程师 对计算机底层 ...

  6. Jenkins配置从节点

    配置从节点步骤 在Master的站点上创建节点配置信息 在Slave访问Jenkins站点,然后下载运行服务Slave端必须安装Jdk 两种运行方式: windows 服务 运行jar包 成功后的节点 ...

  7. 简单计算器 安卓 Android 作业

    Android老师布置的课程作业——简单计算器 功能要求实现四则运算,参考界面见下图: 首先给各位老铁提供apk安装包以及项目压缩包,略表诚意~ github地址:https://github.com ...

  8. IIS网站部署后,程序常见错误记录

    1.网站部署步骤 开启IIS服务.打开IIS管理器.添加网站.修改程序池(4.0).部署完成. 2.常见问题记录(问题记录比较模糊,仅做参考) (1).对于web.config连接数据库的配置为win ...

  9. 20171201 - macOS High Sierra 神级 bug

    昨日亲测有效,macOS High Sierra 神级 bug,系统管理员 root 密码为空,输入就可以登录,具备最高权限. 让人不禁想象 Apple Software 怎么了,人才都流失了吗?

  10. pycharm配置运行django项目步骤

    1:在django项目的跟目录下执行:这是直接在Linux系统中直接运行 python manage.py runserver 0:8000 然后在浏览器中输入IP端口即可访问 pycharm配置运行 ...