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. python——几种截图对比方式!

    本次记录的几种截图对比方式,主要是为了在进行手机自动化测试时,通过截图对比来判断测试的正确性,方式如下: # -*- coding: utf- -*- ''' 用途:利用python实现多种方法来实现 ...

  2. hystrix基本介绍和使用(1)

    一.hystrix基本介绍 Hystrix(https://github.com/Netflix/Hystrix)是Netflix(https://www.netflix.com/global)的一个 ...

  3. 我的微服务观,surging 2.0将会带来多大的改变

    Surging 自2017年6月16日开源以来,已收到不少公司的关注或者使用,其中既有以海克斯康超大型等外企的关注,也不乏深圳泓达康.重庆金翅膀等传统行业的正式使用,自2019年年初,surging2 ...

  4. Java的序列化和反序列化

    概述 Java对象的序列化和反序列化,这个词对我来说追溯到大学阶段,学Java对象流时知道有这东西.老师告诉我们可以把Java对象化作字节流,储存文件或网络通信.然后就是巴啦巴拉,一脸懵逼.举个例子, ...

  5. c# 基于文件系统实现的队列处理类

    现实业务中经常遇到需要队列处理的问题. 问题场景: 客户端记录设备运行数据,传输给服务器.在传输中可能存在延迟或中断情况.当中断时,系统传输数据可能因为无法传输或电脑重启,会导致服务器数据记录不连续. ...

  6. MySQL数据同步,出现Slave_SQL_Running:no和slave_io_running:no问题的解决方法

    一.问题描述: 当我们配置好MySQL主主同步时,是可以实现主主同步,但是重启机器后就发现无法同步了. 二.Slave两个关键进程: mysql replication 中slave机器上有两个关键的 ...

  7. SQLI LABS Challenges Part(54-65) WriteUp

    终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...

  8. python接口自动化(八)--发送post请求的接口(详解)

    简介 上篇介绍完发送get请求的接口,大家必然联想到发送post请求的接口也不会太难,被聪明的你又猜到了.答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统 ...

  9. ab性能测试工具的使用

    一.什么是ab ab,即Apache Benchmark,是一种用于测试Apache超文本传输协议(HTTP)服务器的工具. ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访 ...

  10. [译]PEP 380--子生成器的语法

    导语: PEP(Python增强提案)几乎是 Python 社区中最重要的文档,它们提供了公告信息.指导流程.新功能的设计及使用说明等内容.对于学习者来说,PEP 是非常值得一读的第一手材料,学习中遇 ...