zoukankan      html  css  js  c++  java
  • 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 = 1;
                int y = 1;
                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 = "1";
                string n = "1";
                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 = 1; }
    
        class B { public int X = 1; }
    
        struct T { int X; }
    
        struct V { int X; }
    
    }
    View Code

    原址:https://blog.csdn.net/studyofnet/article/details/16842235

               https://www.cnblogs.com/9cct/p/7749358.html

  • 相关阅读:
    Spring(AbstractRoutingDataSource)实现动态数据源切换--转载
    Ajax与Controller的参数交互
    如何用Windows PowerShell替换命令提示符
    SharePoint 2016 如何修改Library 地址
    SQL Server 2012安装配置(Part1 )
    SharePoint 2010 缺少站点保存为模板选项
    SharePoint Online和SharePoint 2016 导出到Excel 表错误
    Windows计算机重置TCP / IP
    备份和导入Outlook 2016 电子邮件签名
    SharePoint 2016 功能比较
  • 原文地址:https://www.cnblogs.com/Tanghongchang/p/9641728.html
Copyright © 2011-2022 走看看