特に参照型のコンテンツの等価性について少し混乱しています。どちらの場合も、平等をオーバーライドしていません。では、なぜ動作が異なるのでしょうか。
2 つの簡単なコード例を参照してください。
例 1: True を返します
class Program
{
static void Main(string[] args)
{
object o1 = "ABC";
object o2 = "ABC";
Console.WriteLine("object1 and object2: {0}", o1.Equals(o2));
}
}
例 2: 両方のステートメントが False を返す
class Program
{
static void Main(string[] args)
{
Person person1 = new Person("John");
Person person2 = new Person("John");
Console.WriteLine("person1 and person2: {0}", person1.Equals(person2));
Console.WriteLine("person1 and person2: {0}", ((object)person1).Equals((object)person2));
Console.ReadLine();
}
}
public class Person
{
private string personName;
public Person(string name)
{
this.personName = name;
}
}