Object.Equals is virtual, but Object.operator== does not use it in C#?
问题 I got hit by a strange "asymmetry" in C# that I do not really understand. See the following code: using System; using System.Diagnostics; namespace EqualsExperiment { class Program { static void Main(string[] args) { object apple = "apple"; object orange = string.Format("{0}{1}", "ap", "ple"); Console.WriteLine("1"); Debug.Assert(apple.Equals(orange)); Console.WriteLine("2"); Debug.Assert(apple == orange); Console.WriteLine("3"); } } } It might be obvious for all you .NET gurus, but the 2nd