Mam pytanie dotyczące Object.Equals
i Equals(object)
. Mój przykładowy kod znajduje się poniżej:C# Różnice między operatorem ==, StringBuilder.Equals, Object.Equals i Object.ReferenceEquals
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();
}
}
Wyjście jest:
False
True
False
False
Ale o ile mi wiadomo Object.Equals(sb1, sb2)
wewnętrznie wywołuje sb1.Equals(sb2)
więc dlaczego nie dać dwa różne wyniki?
Powinieneś wymyślić lepszy tytuł pytania. Prąd nic nie znaczy. Nie powtarzaj tagów w tytułach. –
@ReferenceEquals: Porównujesz cztery metody porównywania. Zmodyfikowałem twój tytuł, aby lepiej odzwierciedlał twoje pytanie. –
Dlaczego sprawdzasz równość na 2 stringbuilderach? To jest jak sprawdzanie strumienia lub autora tekstów pod kątem równości. – leppie