This is the complete listing of the Employee class, including the overridden methods of the System.Object class:
using System; using System.Collections; namespace Donis.CSharpBook{ public class Starter{ public static void Main(){ Employee obj1=new Employee(5678); Employee obj2=new Employee(5678); if(obj1==obj2) { Console.WriteLine("equals"); } else { Console.WriteLine("not equals"); } } } class Employee { public Employee(int id) { if((id<1000) || (id>9999)) { throw new Exception( "Invalid Employee ID"); } propID=id; } public static bool operator==(Employee obj1, Employee obj2) { return obj1.Equals(obj2); } public static bool operator!=(Employee obj1, Employee obj2) { return !obj1.Equals(obj2); } public override bool Equals(object obj) { Employee _obj=obj as Employee; if(obj==null) { return false; } return this.GetHashCode()==_obj.GetHashCode(); } public override int GetHashCode() { return EmplID; } public string FullName { get { return propFirst+" "+ propLast; } } private string propFirst; public string First { get { return propFirst; } set { propFirst=value; } } private string propLast; public string Last { get { return propLast; } set { propLast=value; } } private readonly int propID; public int EmplID { get { return propID; } } public override string ToString() { return FullName; } } }