class Person : IPrinter, IComparable
public Person(string name, int age)
Console.WriteLine("Имя: {0}", name);
Console.WriteLine("Возраст: {0}", age);
public int CompareTo(object obj)
Person person = (Person)obj;
return age.CompareTo(person.age);
public override string ToString()
return String.Format("{0}({1} года)", name, age);
public static void Main()
Person person = new Person("Mo", 40);
Person[] persons = new Person[5];
persons[0] = new Person("Donnahan",14);
persons[1] = new Person("Burg", 52);
persons[2] = new Person("Canter", 61);
persons[3] = new Person("Kurerin", 15);
persons[4] = new Person("Curs", 32);
Console.WriteLine("Первый объект класса - {0}\nВторой объект класса - {1}",persons[0], persons[1]);
Swap(ref persons[0], ref persons[1]);
Console.WriteLine("После обмена: ");
Console.WriteLine("Первый объект класса - {0}\nВторой объект класса - {1}", persons[0], persons[1]);
Console.WriteLine("Меньшее из {0} и {1} - {2}", 20, 15, Min(20, 15));
Console.WriteLine("Меньшее из {0} и {1} - {2}", "ara", "ber", Min("ara", "ber"));
Console.WriteLine("Меньшее из {0} и {1} - {2}", persons[3], persons[4], Min(persons[3], persons[4]));
static void Swap<T>(ref T x, ref T y)
static T Min<T>(T x, T y) where T: IComparable