ami*_*bha 26 c# stringbuilder object referenceequals equals-operator
我有一个关于Object.Equals
和的问题Equals(object)
.我的示例代码如下:
class Program
{
static void Main(string[] args)
{
var sb1 = new StringBuilder("Food");
var sb2 = new StringBuilder("Food");
Console.WriteLine(sb1 == sb2);
Console.WriteLine(sb1.Equals(sb2));
Console.WriteLine(Object.Equals(sb1, sb2));
Console.WriteLine(Object.ReferenceEquals(sb1, sb2));
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
False
True
False
False
Run Code Online (Sandbox Code Playgroud)
但就我Object.Equals(sb1, sb2)
内心的 问题而言sb1.Equals(sb2)
,为什么会给出两个不同的结果?
Kob*_*obi 17
你错过了另一个测试:
Console.WriteLine(sb1.Equals((object)sb2)); // False!
Run Code Online (Sandbox Code Playgroud)
StringBuilder不会覆盖Equals(object)
,它会使用另一个重载它Equals(StringBuilder)
.
Object.Equals(object, object)
正在调用Equals(object)
,所以结果是假的.