技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

示例分析C#中==和Equals()方法的区别

作者:admin    时间:2023-6-10 16:46:49    浏览:

在 C# 中,相等运算符 ==检查两个操作数是否相等,而Object.Equals()方法检查两个对象实例是否相等。

在内部,== 作为运算符重载方法实现,因此结果取决于该方法的重载方式。同理,Object.Equals()方法是虚方法,结果取决于实现。例如,== 运算符和.Equals()比较两个内置值类型变量的值。如果两个值相等则返回true;否则返回false

int i = 10, j = 10;

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

对于引用类型变量,==.Equals()方法默认检查两个两个对象实例是否相等。但是,对于字符串类型,.Equals() 方法和 == 实现了比较值而不是实例。

示例

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

现在,看看下面的例子:

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

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

在上面的示例中,==Equals()方法看起来像比较值,但是,他们比较实例。如果两个值相等,C# 将两个对象指向相同的内存地址。所以,它们返回了true

现在,检查以下内容:

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

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

在上面的例子中,obj1指向StringBuilder类型的对象,并且obj2是字符串类型,所以即使它们具有相同的值,它们也是不同的实例。因此,==Equals()方法比较实例并返回false,因为它们是不同的实例。

C# 中 == 和 .Equals 方法的区别

相等运算符(==)是比较运算符,C#中的Equals()方法用于比较字符串的内容。

Equals() 方法只比较内容。

例子

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 运算符用于比较引用身份。

让我们看另一个例子。

例子

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() 方法用于检查两个 String 对象是否具有相同的值。

句法

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

总结

本文通过多个示例,解释了C#中==Equals()方法的区别,希望对你有所帮助。

相关文章

标签: Equals方法  ==运算符  CSharp  
x
  • 站长推荐
/* 左侧显示文章内容目录 */