Overridden Equals() : override « Class « C# / CSharp Tutorial






using System;
using System.Text;



class Person
{
    public Person(string fname, string lname, string ssn, byte a)
    {
    FirstName = fname;
    LastName = lname;
    SSN = ssn;
    age = a;
    }

  public string FirstName;
  public string LastName;
  public string SSN;
  public byte age;

  public override bool Equals(object o)
  {
    Person temp = (Person)o;
    if(temp.FirstName == this.FirstName &&
       temp.LastName == this.LastName &&
       temp.SSN == this.SSN &&
       temp.age == this.age)
    {
      return true;
    }
    else
      return false;
  }

  public override string ToString()
  {
    StringBuilder sb = new StringBuilder();
          sb.AppendFormat("[FirstName= {0}", this.FirstName);
          sb.AppendFormat(" LastName= {0}", this.LastName);
          sb.AppendFormat(" SSN= {0}", this.SSN);
          sb.AppendFormat(" Age= {0}]", this.age);

    return sb.ToString();
  }

  public override int GetHashCode()
  {
    return SSN.GetHashCode();
  }
}


class MainClass
{
    public static void Main(string[] args)
    {
    Person p1 = new Person("Fred", "Jones", "222-22-2222", 98);
    Person p2 = new Person("Fred", "Jones", "222-22-2222", 98);

    
    if(p1.Equals(p2) && p1.GetHashCode() == p2.GetHashCode())
      Console.WriteLine("P1 and P2 have same state\n");
    else
      Console.WriteLine("P1 and P2 are DIFFERENT\n");

    }
}
P1 and P2 have same state








7.24.override
7.24.1.Virtual and override member function
7.24.2.Override without 'override' keyword
7.24.3.Three-level Override methods
7.24.4.new method: not override
7.24.5.Overridden Equals()
7.24.6.Overriding Virtual Methods
7.24.7.Resolving Ambiguity with the override Modifier
7.24.8.Resolving Ambiguity with the new Keyword
7.24.9.PrintValue() Added to the BaseClass Class