-
Завдання: Створити програму, яка використовує вбудований інтерфейс IComparable для сортування масиву об’єктів за певним критерієм (наприклад, за ім’ям або віком). Приклад виконання: ```csharp class Person : IComparable
{ public string Name { get; set; } public int Age { get; set; } public int CompareTo(Person other) { return this.Name.CompareTo(other.Name); } }// Використання вбудованого інтерфейсу IComparable для сортування масиву об’єктів Person за ім’ям Person[] people = new Person[] { new Person { Name = “John”, Age = 25 }, new Person { Name = “Alice”, Age = 30 }, new Person { Name = “Bob”, Age = 20 } };
Array.Sort(people);
foreach (Person person in people) { Console.WriteLine(person.Name); } ```
-
Завдання: Створити програму, яка використовує вбудований інтерфейс ICloneable для створення копії об’єкту. Приклад виконання: ```csharp class Person : ICloneable { public string Name { get; set; } public int Age { get; set; }
public object Clone() { return new Person { Name = this.Name, Age = this.Age }; } }// Використання вбудованого інтерфейсу ICloneable для створення копії об’єкту Person Person person1 = new Person { Name = “John”, Age = 25 }; Person person2 = (Person)person1.Clone();
Console.WriteLine(person1.Name); // Виведе “John” Console.WriteLine(person2.Name); // Виведе “John” ```
-
Завдання: Створити програму, яка використовує вбудований інтерфейс IEnumerable для ітерації по колекції об’єктів. Приклад виконання: ```csharp class Person { public string Name { get; set; } public int Age { get; set; } }
class People : IEnumerable
{ private List people = new List (); public void Add(Person person) { people.Add(person); } public IEnumerator<Person> GetEnumerator() { return people.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }// Використання вбудованого інтерфейсу IEnumerable для ітерації по колекції об’єктів Person People people = new People(); people.Add(new Person { Name = “John”, Age = 25 }); people.Add(new Person { Name = “Alice”, Age = 30 }); people.Add(new Person { Name = “Bob”, Age = 20 });
foreach (Person person in people) { Console.WriteLine(person.Name); } ```
-
Завдання: Створити програму, яка використовує вбудований інтерфейс IDisposable для коректного вивільнення ресурсів. Приклад виконання: ```csharp class Resource : IDisposable { private bool disposed = false;
public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!disposed) { if (disposing) { // Вивільнення керованих ресурсів } // Вивільнення некерованих ресурсів disposed = true; } } ~Resource() { Dispose(false); } }// Використання вбудованого інтерфейсу IDisposable для коректного вивільнення ресурсів using (Resource resource = new Resource()) { // Використання ресурсу } ```
-
Завдання: Створити програму, яка використовує вбудований інтерфейс IFormattable для форматування об’єкту у рядок за певним шаблоном. Приклад виконання: ```csharp class Person : IFormattable { public string Name { get; set; } public int Age { get; set; }
public string ToString(string format, IFormatProvider formatProvider) { if (format == "N") { return Name; } else if (format == "A") { return Age.ToString(); } else { return $"{Name} ({Age})"; } } }// Використання вбудованого інтерфейсу IFormattable для форматування об’єкту Person Person person = new Person { Name = “John”, Age = 25 };
Console.WriteLine(person.ToString(“N”)); // Виведе “John” Console.WriteLine(person.ToString(“A”)); // Виведе “25” Console.WriteLine(person.ToString(“G”)); // Виведе “John (25)” ```
-
Завдання: Створити програму, яка використовує вбудований інтерфейс IEqualityComparer для порівняння об’єктів за певним критерієм. Приклад виконання: ```csharp class Person { public string Name { get; set; } public int Age { get; set; } }
class PersonEqualityComparer : IEqualityComparer
{ public bool Equals(Person x, Person y) { return x.Name == y.Name && x.Age == y.Age; } public int GetHashCode(Person obj) { return obj.Name.GetHashCode() ^ obj.Age.GetHashCode(); } }// Використання вбудованого інтерфейсу IEqualityComparer для порівняння об’єктів Person Person person1 = new Person { Name = “John”, Age = 25 }; Person person2 = new Person { Name = “John”, Age = 25 };
bool areEqual = new PersonEqualityComparer().Equals(person1, person2);
Console.WriteLine(areEqual); // Виведе “True” ```
-
Завдання: Створити програму, яка використовує вбудований інтерфейс IConvertible для конвертації об’єкту в інший тип даних. Приклад виконання: ```csharp class Person : IConvertible { public string Name { get; set; } public int Age { get; set; }
public TypeCode GetTypeCode() { return TypeCode.Object; } public bool ToBoolean(IFormatProvider provider) { throw new InvalidCastException(); } public byte ToByte(IFormatProvider provider) { throw new InvalidCastException(); } public char ToChar(IFormatProvider provider) { throw new InvalidCastException(); } public DateTime ToDateTime(IFormatProvider provider) { throw new InvalidCastException(); } public decimal ToDecimal(IFormatProvider provider) { throw new InvalidCastException(); } public double ToDouble(IFormatProvider provider) { throw new InvalidCastException(); } public short ToInt16(IFormatProvider provider) { throw new InvalidCastException(); } public int ToInt32(IFormatProvider provider) { return Age; } public long ToInt64(IFormatProvider provider) { throw new InvalidCastException(); } public sbyte ToSByte
Loading...