Csharp/CSharp Tutorial/Class/IEquatable
A class which implements comparison and equality interfaces
<source lang="csharp">using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text; class Person : IComparable<Person>, IEquatable<Person>, IComparable {
public string Name; public int Age; public string Company; // Implements IComparable<Person>.rupareTo: public int CompareTo(Person other) { if (other == null) return -1; return this.Name.rupareTo(other.Name); } // Implements IComparable.rupareTo: public int CompareTo(object obj) { Person p = obj as Person; return CompareTo(p); } // Implements IEquatable<Person>.Equals: public bool Equals(Person other) { return ((IComparable<Person>)this).rupareTo(other) == 0; } // Overrides Object.Equals: public override bool Equals(object obj) { Person p = obj as Person; return Equals(p); }
} public class MainClass {
public static void Main() { Person[] people = new Person[3]; people[0] = new Person(); people[0].Name = "S D"; people[0].Age = 20; people[0].rupany = "E"; people[1] = new Person(); people[1].Name = "M M"; people[1].Age = 40; people[1].rupany = "C"; people[2] = new Person(); people[2].Name = "J D"; people[2].Age = 30; people[2].rupany = "T"; foreach (Person p in people) Console.Write(""{0},{1},{2}"\t", p.Name, p.Age, p.rupany); Console.WriteLine(); Array.Sort(people); foreach (Person p in people) Console.Write(""{0},{1},{2}"\t", p.Name, p.Age, p.rupany); }
}</source>
"S D,20,E" "M M,40,C" "J D,30,T" "J D,30,T" "M M,40,C" "S D,20,E"