[C#] C# 中相等运算符 (==) 和 Equals() 方法之间的区别

  == 运算符和 Equals() 方法都用于比较两个值类型数据项或引用类型数据项。本文解释了这两者之间的基本区别。相等运算符 (==) 是比较运算符,而 Equals() 方法比较字符串的内容。 == 运算符比较引用标识,而 Equals() 方法只比较内容。让我们看一些例子。

  在第一个例子中,我们将一个字符串变量分配给另一个变量。字符串是一种引用类型,在下面的例子中,一个字符串变量被分配给另一个字符串变量,所以它们在堆中引用的是相同的身份,并且都有相同的内容,所以你在==运算符和Equals()方法中都得到了True输出。

using System;  
  
namespace ComparisionExample  
{  
   class Program  
    {   
      static void Main(string[] args)   
       {   
          string name = "sandeep";   
          string myName = name;   
          Console.WriteLine("== operator result is {0}", name == myName);  
            Console.WriteLine("Equals method result is {0}", name.Equals(myName));  
           Console.ReadKey();  
        }    
  
    }  
}  

现在运行程序,得到如图 1.1 所示的结果

drawing

图 1.1 第一个程序的输出

  让我们看看另一个例子,两个对象变量中的内容将是相同的,但两者的引用不同。所以==运算符返回假,因为它比较的是引用身份,而Equals()方法返回真,因为它比较的是对象的内容。

using System;  
namespace ComparisionExample  
{  
   class Program  
    {  
       static void Main(string[] args)  
        {  
           object name = "sandeep";  
           char[] values = {'s','a','n','d','e','e','p'};  
           object myName = new string(values);           
           Console.WriteLine("== operator result is {0}", name == myName);  
           Console.WriteLine("Equals method result is {0}", myName.Equals(name));  
           Console.ReadKey();  
        }       
    }  
}  

现在运行程序,得到如图 1.2 所示的结果

drawing

图 1.2 程序 2 的输出

  现在让我们再看一个例子,说明Equals()方法是字符串类的一个扩展方法,当你给字符串变量分配一个空值,使用该变量时,Equals()方法就会得到一个空引用的异常,所以你必须确保你的变量在调用Equals()方法时没有空值。当你的一个变量包含一个空值时,那么你应该使用该变量作为Equals()方法的参数。

drawing

图 1.3 空引用异常

  经验法则是,对于几乎所有的引用类型,当你想测试平等性而不是引用同一性时,使用Equals。字符串是个例外;用==来比较字符串确实让事情变得更简单、更易读,但你需要记住,运算符的两边必须是字符串类型的表达式,这样比较才能正常工作。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值