示例分析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)
上面,s1 和 s2 是要比较的字符串。
例子
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()
方法的区别,希望对你有所帮助。
相关文章
- 站长推荐