Назад Вперед Зміст

Стандартні інтерфейси у C#: IComparable та ICloneable

У мові C# існує багато вбудованих інтерфейсів, які спрощують розробку та забезпечують стандартні можливості для класів. Два з найчастіше використовуваних:


1. Інтерфейс IComparable

Інтерфейс 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);
    }
}

2. Інтерфейс ICloneable

Інтерфейс 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 — це зручні інструменти, які дозволяють робити об'єкти впорядковуваними та клонованими без додаткових зовнішніх механізмів. Вони часто використовуються у колекціях, алгоритмах сортування та під час копіювання складних об'єктів.

Назад Вперед Зміст