Вызов оператора false для объекта обобщенного типа - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. По заданию нужно было перегрузить оператор false(как понимаю, с этим я справился). Но вот как теперь вызвать этот оператор? Если true можно вызвать попросту написав if (obj) , то !obj вызывает ошибку... Ниже приведен код. А так же про if (set._set[i].CompareTo(default(T)) < 0) , так получится узнать, отрицательный элемент или нет? Кстати, заодно вопрос про функцию Add: подобная реализация допустима, или же применяется что-то иное, когда нужно добавить элемент в массив? П.С. На шарпе второй день, извините, если ляпы будут. За критику и ответы спасибо!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Sharp
{
    class Set<T> where T : IComparable<T>
    {
        public Set(params T[] sequence) // конструктор
        {
            _set = sequence;
        }
 
        public void Add(T elem) // добавление элемента
        {
            Array.Resize(ref _set, _set.Length + 1);
            _set[_set.Length - 1] = elem;
        }
 
        public T this[int i]    // индексатор
        {
            get { return _set[i]; }
            set { _set[i] = value; }
        }
        
        public static bool operator false(Set<T> set)               // set содержит отрицательные элементы?
        {
            for (int i = 0; i < set._set.Length; i++)
            {
                if (set._set[i].CompareTo(default(T)) < 0)
                {
                    return true;        // есть отрицательные
                }
            }
            return false;       // нет отрицательных
        }
 
        public static bool operator true(Set<T> set)                // set не содержит отрицательные элементы?
        {
            return false;   // тест
        }
 
        ~Set()              // деструктор
        {
            _set = null;
        }
 
        private T[] _set;   // массив элементов
    }
}

Решение задачи: «Вызов оператора false для объекта обобщенного типа»

textual
Листинг программы
        public static Set<T> operator &(Set<T> set1, Set<T> set2)
        {
            return new Set<T>();//temp
        }
 
        public static bool operator false(Set<T> set)               // set содержит отрицательные элементы?
        {
            return set.HasNegativeItems();
        }
 
        public static bool operator true(Set<T> set)                // set не содержит отрицательные элементы?
        {
            return !set.HasNegativeItems();
        }
 
        private bool HasNegativeItems()
        {
            for (int i = 0; i < _set.Length; i++)
            {
                if (_set[i].CompareTo(default(T)) < 0)
                {
                    return true; // есть отрицательные
                }
            }
            return false;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы