zoukankan      html  css  js  c++  java
  • C#中equals和==的区别有哪些

    本文导读:C# 中==是用来判断变量的值是否相等,相等返回true,不相等返回false。Equals是用来判断两个对象(除string类型外)是否相等,相等的 条件是:值,地址,引用全相等,因为String类重写了Equals方法,所以当string类型的对象用Equals方法比较时只比较两个对象的值相 等返回true,不相等返回false。

    C# 中有两种不同的相等:引用相等和值相等。


    ◎值相等是大家普遍理解的意义上的相等:它意味着两个对象包含相同的值。
    ◎引用相等意味着要比较的不是两个对象,而是两个对象引用,且两者引用的是同一个对象。

     

    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()方法),使string对象用起来就像是值类型一样。
    
     
    实例
     
    C# 代码   复制
     using System;
     using System.Collections.Generic;
     using System.Linq;
     using System.Text;
     
    namespace ConsoleApplication1
     {
         class Person
         {
             privatestring name;
             publicstring Name
             {
                 get{ return name; }
                 set{ name = value; }
             }
             public Person(string name)
             {
                 this.name = name;
             }
         }
         class program
         {
             staticvoid Main(string[] args)
             {
                 string a =newstring(newchar[] ...);
                 string b =newstring(newchar[] { 'h', 'e', 'l', 'l', 'o' });
                 Console.WriteLine(a == b);
                 Console.WriteLine(a.Equals(b));
                 object g = a;
                 object h = b;
                 Console.WriteLine(g == h);
                 Console.WriteLine(g.Equals(h));
                 Person p1 =new Person("jia");
                 Person p2 =new Person("jia");
                 Console.WriteLine(p1 == p2);
                 Console.WriteLine(p1.Equals(p2));
                 Person p3 =new Person("jia");
                 Person p4 = p3;
                 Console.WriteLine(p3 == p4);
                 Console.WriteLine(p3.Equals(p4));
                 Console.ReadLine();
             }
         }
     }
  • 相关阅读:
    CodeForces 660D Number of Parallelograms
    【POJ 1082】 Calendar Game
    【POJ 2352】 Stars
    【POJ 2481】 Cows
    【POJ 1733】 Parity Game
    【NOI 2002】 银河英雄传说
    【NOI 2015】 程序自动分析
    【POJ 1704】 Georgia and Bob
    【HDU 2176】 取(m堆)石子游戏
    【SDOI 2016】 排列计数
  • 原文地址:https://www.cnblogs.com/hoosway/p/3600709.html
Copyright © 2011-2022 走看看