技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

示例分析C#中==和Equals()方法的區(qū)別

作者:admin    時(shí)間:2023-6-10 16:46:49    瀏覽:

在 C# 中,相等運(yùn)算符 ==檢查兩個(gè)操作數(shù)是否相等,而Object.Equals()方法檢查兩個(gè)對(duì)象實(shí)例是否相等。

在內(nèi)部,== 作為運(yùn)算符重載方法實(shí)現(xiàn),因此結(jié)果取決于該方法的重載方式。同理,Object.Equals()方法是虛方法,結(jié)果取決于實(shí)現(xiàn)。例如,== 運(yùn)算符和.Equals()比較兩個(gè)內(nèi)置值類型變量的值。如果兩個(gè)值相等則返回true;否則返回false。

int i = 10, j = 10;

Console.WriteLine(i == j); // true
Console.WriteLine(i.Equals(j)); // true

對(duì)于引用類型變量,==.Equals()方法默認(rèn)檢查兩個(gè)兩個(gè)對(duì)象實(shí)例是否相等。但是,對(duì)于字符串類型,.Equals() 方法和 == 實(shí)現(xiàn)了比較值而不是實(shí)例。

示例

string str1 = "Hello",
str2 = "Hello",
str3 = "hello";

Console.WriteLine(str1 == str2); // true
Console.WriteLine(str1 == str3 ); // false

Console.WriteLine(str1.Equals(str2));// true
Console.WriteLine(str1.Equals(str3));// false

現(xiàn)在,看看下面的例子:

object obj1 = "Hello";
object obj2 = "Hello";

Console.WriteLine(obj1 == obj2); // true
Console.WriteLine(obj1.Equals(obj2)); // true

在上面的示例中,==Equals()方法看起來(lái)像比較值,但是,他們比較實(shí)例。如果兩個(gè)值相等,C# 將兩個(gè)對(duì)象指向相同的內(nèi)存地址。所以,它們返回了true。

現(xiàn)在,檢查以下內(nèi)容:

object obj1 = new StringBuilder("Hello");
object obj2 = "Hello";

Console.WriteLine(obj1 == obj2); // false
Console.WriteLine(obj1.Equals(obj2));// false

在上面的例子中,obj1指向StringBuilder類型的對(duì)象,并且obj2是字符串類型,所以即使它們具有相同的值,它們也是不同的實(shí)例。因此,==Equals()方法比較實(shí)例并返回false,因?yàn)樗鼈兪遣煌膶?shí)例。

C# 中 == 和 .Equals 方法的區(qū)別

相等運(yùn)算符(==)是比較運(yùn)算符,C#中的Equals()方法用于比較字符串的內(nèi)容。

Equals() 方法只比較內(nèi)容。

例子

using System;
namespace ComparisionExample {
   class Program {
      static void Main(string[] args) {
         string str = "hello";
         string str2 = str;
         Console.WriteLine("Using Equality operator: {0}", str == str2);
         Console.WriteLine("Using equals() method: {0}", str.Equals(str2));
         Console.ReadKey();
      }
   }
}

輸出

Using Equality operator: True
Using equals() method: True

Equality 運(yùn)算符用于比較引用身份。

讓我們看另一個(gè)例子。

例子

using System;
namespace Demo {
   class Program {
      static void Main(string[] args) {
         object str = "hello";
         char[] values = {'h','e','l','l','o'};
         object str2 = new string(values);
         Console.WriteLine("Using Equality operator: {0}", str == str2);
         Console.WriteLine("Using equals() method: {0}", str.Equals(str2));
         Console.ReadKey();
      }
   }
}

輸出

Using Equality operator: False
Using equals() method: True

C# 中的 Equals(String, String) 方法

C# 中的 Equals() 方法用于檢查兩個(gè) String 對(duì)象是否具有相同的值。

句法

bool string.Equals(string s1, string s2)

上面,s1s2 是要比較的字符串。

例子

using System;
public class Demo {
   public static void Main(string[] args) {
      string s1 = "Kevin";
      string s2 = "Tom";
      string s3 = s2;
      Console.WriteLine("String1 = "+s1);
      Console.WriteLine("String2 = "+s2);
      Console.WriteLine("Are both the strings equal? = "+s1.Equals(s2));
      Console.WriteLine("Are both the strings equal? = "+s2.Equals(s3));
   }
}

輸出

String1 = Kevin
String2 = Tom
Are both the strings equal? = False
Are both the strings equal? = True

例子

using System;
public class Demo {
   public static void Main(string[] args) {
      string s1 = "David";
      string s2 = "David";
      string s3 = s2;
      string s4 = "Tom";
      string s5 = s4;
      Console.WriteLine("String1 = "+s1);
      Console.WriteLine("String2 = "+s2);
      Console.WriteLine("String3 = "+s3);
      Console.WriteLine("String4 = "+s4);
      Console.WriteLine("String5 = "+s5);
      Console.WriteLine("Is s1 and s2 equal? = "+s1.Equals(s2));
      Console.WriteLine("Is s2 and s3 equal? = "+s2.Equals(s3));
      Console.WriteLine("Is s3 and s4 equal? = "+s3.Equals(s4));
      Console.WriteLine("Is s4 and s5 equal? = "+s4.Equals(s5));
   }
}

輸出

String1 = David
String2 = David
String3 = David
String4 = Tom
String5 = Tom
Is s1 and s2 equal? = True
Is s2 and s3 equal? = True
Is s3 and s4 equal? = False
Is s4 and s5 equal? = True

總結(jié)

本文通過(guò)多個(gè)示例,解釋了C#中==Equals()方法的區(qū)別,希望對(duì)你有所幫助。

相關(guān)文章

標(biāo)簽: Equals方法  ==運(yùn)算符  CSharp  
x
  • 站長(zhǎng)推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */