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. TensorFlow从1到2(八)过拟合和欠拟合的优化

    <从锅炉工到AI专家(6)>一文中,我们把神经网络模型降维,简单的在二维空间中介绍了过拟合和欠拟合的现象和解决方法.但是因为条件所限,在该文中我们只介绍了理论,并没有实际观察现象和应对. ...

  2. 支持向量机(Support Vector Machine,SVM)—— 线性SVM

      支持向量机(Support Vector Machine,简称 SVM)于 1995 年正式发表,由于其在文本分类任务中的卓越性能,很快就成为机器学习的主流技术.尽管现在 Deep Learnin ...

  3. WebApi管理和性能测试工具WebApiBenchmarks

    说到WebApi管理和测试工具其实已经非常多的了,Postman.Swagger等在管理和维护上都非常出色:在性能测试方面也有不少的工具如:wrk,bombardier,http_load和ab等等. ...

  4. Python中最好用的命令行解析工具:argparse

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  5. vue-router中元信息meta的妙用

    { path:"/test", name:"test", component:()=>import("@/components/test&quo ...

  6. MongoDb 集群不可用后SECONDARY节点强制启动

    机房意外断电断网不得不预防,下面模拟测试某机房断电断网,B机房断电断网后A机房可正常提供服务,A机房断电断网后可能需要强制重启继续提供服务了,目前查看数据都还在,暂时没验证是否有数据丢失,小试了一把. ...

  7. Java提取URL某个参数的值

    Java提取Url中某个参数的值. public static String getParam(String url, String name) { String params = url.subst ...

  8. mysql之数据库添加索引优化查询效率

    项目中如果表中的数据过多的话,会影响查询的效率,那么我们需要想办法优化查询,通常添加索引就是我们的选择之一: 1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `t ...

  9. 学python走过的坑 三 不能实现的浏览器缩放功能

    公司一个项目,在启动web页面时,默认应该是打开项目页面,然后浏览器启动时总是打开一个广告页面,经理让写一个脚本,让电脑每次开机自启浏览器,且加载项目页面.浏览器自启和打开项目页面轻松搞定,这时问题来 ...

  10. redis的list类型!!!!

    list类型 list类型是按照插入顺序排序的字符串链表,可在(left)头部和(right)尾部插入值,效率高. list增操作 若插入时,该键不存在,则会创建.若所有元素被移除,该键也会被删除. ...