Вызов оператора 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д