У мові C# існує багато вбудованих інтерфейсів, які спрощують розробку та забезпечують стандартні можливості для класів. Два з найчастіше використовуваних:
CompareTo для порівняння об'єктів.Clone для створення копії об'єкта.
Інтерфейс IComparable дозволяє визначити власний порядок сортування об'єктів.
Він містить один метод:
int CompareTo(object obj)
Повертає від’ємне число, якщо поточний об’єкт менший за obj;
нуль — якщо рівні;
додатне число — якщо більший.
using System;
using System.Collections.Generic;
class Student : IComparable
{
public string Name { get; set; }
public int Grade { get; set; }
public Student(string name, int grade)
{
Name = name;
Grade = grade;
}
public int CompareTo(Student other)
{
if (other == null) return 1;
return Grade.CompareTo(other.Grade);
}
public override string ToString()
{
return $"{Name} ({Grade})";
}
}
class Program
{
static void Main()
{
List students = new List
{
new Student("Іван", 85),
new Student("Марія", 92),
new Student("Петро", 78)
};
students.Sort();
Console.WriteLine("Список студентів за зростанням балів:");
foreach (var s in students)
Console.WriteLine(s);
}
}
Інтерфейс ICloneable використовується для створення копій об'єктів.
Він містить один метод:
object Clone()
Повертає новий об’єкт, який є копією поточного.
using System;
class Person : ICloneable
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public object Clone()
{
return new Person(this.Name, this.Age);
}
public override string ToString()
{
return $"{Name}, {Age} років";
}
}
class Program
{
static void Main()
{
Person p1 = new Person("Олег", 30);
Person p2 = (Person)p1.Clone();
p2.Name = "Ірина";
Console.WriteLine("Оригінал: " + p1);
Console.WriteLine("Копія: " + p2);
}
}
| Інтерфейс | Приклад | Результат |
|---|---|---|
| IComparable | Сортування студентів за балами |
Петро (78) Іван (85) Марія (92) |
| ICloneable | Копіювання об'єкта Person |
Оригінал: Олег, 30 років Копія: Ірина, 30 років |
Інтерфейси IComparable та ICloneable — це зручні інструменти, які дозволяють робити об'єкти впорядковуваними та клонованими без додаткових зовнішніх механізмів. Вони часто використовуються у колекціях, алгоритмах сортування та під час копіювання складних об'єктів.