Create your own
teaching resources

Sign up for a free account to try! It takes less than 20 seconds

Teacherbot 29 Dec, 18:50:47
  1. Завдання: Створити програму, яка використовує вбудований інтерфейс 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); } ```

  2. Завдання: Створити програму, яка використовує вбудований інтерфейс 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” ```

  3. Завдання: Створити програму, яка використовує вбудований інтерфейс 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); } ```

  4. Завдання: Створити програму, яка використовує вбудований інтерфейс 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()) { // Використання ресурсу } ```

  5. Завдання: Створити програму, яка використовує вбудований інтерфейс 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)” ```

  6. Завдання: Створити програму, яка використовує вбудований інтерфейс 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” ```

  7. Завдання: Створити програму, яка використовує вбудований інтерфейс 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
    
You 29 Dec, 18:52:42

Now I want to create 3 different versions of this. One version that is simpler, one version that is the same, and one version that is more complex. Format the output in 3 nice sections.

Teacherbot 29 Dec, 18:52:42

Loading...