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