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

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

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

Добрый вечер. По заданию нужно было перегрузить оператор false(как понимаю, с этим я справился). Но вот как теперь вызвать этот оператор? Если true можно вызвать попросту написав if (obj) , то !obj вызывает ошибку... Ниже приведен код. А так же про if (set._set[i].CompareTo(default(T)) < 0) , так получится узнать, отрицательный элемент или нет? Кстати, заодно вопрос про функцию Add: подобная реализация допустима, или же применяется что-то иное, когда нужно добавить элемент в массив? П.С. На шарпе второй день, извините, если ляпы будут. За критику и ответы спасибо!
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Sharp
  7. {
  8. class Set<T> where T : IComparable<T>
  9. {
  10. public Set(params T[] sequence) // конструктор
  11. {
  12. _set = sequence;
  13. }
  14. public void Add(T elem) // добавление элемента
  15. {
  16. Array.Resize(ref _set, _set.Length + 1);
  17. _set[_set.Length - 1] = elem;
  18. }
  19. public T this[int i] // индексатор
  20. {
  21. get { return _set[i]; }
  22. set { _set[i] = value; }
  23. }
  24. public static bool operator false(Set<T> set) // set содержит отрицательные элементы?
  25. {
  26. for (int i = 0; i < set._set.Length; i++)
  27. {
  28. if (set._set[i].CompareTo(default(T)) < 0)
  29. {
  30. return true; // есть отрицательные
  31. }
  32. }
  33. return false; // нет отрицательных
  34. }
  35. public static bool operator true(Set<T> set) // set не содержит отрицательные элементы?
  36. {
  37. return false; // тест
  38. }
  39. ~Set() // деструктор
  40. {
  41. _set = null;
  42. }
  43. private T[] _set; // массив элементов
  44. }
  45. }

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

textual
Листинг программы
  1.         public static Set<T> operator &(Set<T> set1, Set<T> set2)
  2.         {
  3.             return new Set<T>();//temp
  4.         }
  5.  
  6.         public static bool operator false(Set<T> set)               // set содержит отрицательные элементы?
  7.         {
  8.             return set.HasNegativeItems();
  9.         }
  10.  
  11.         public static bool operator true(Set<T> set)                // set не содержит отрицательные элементы?
  12.         {
  13.             return !set.HasNegativeItems();
  14.         }
  15.  
  16.         private bool HasNegativeItems()
  17.         {
  18.             for (int i = 0; i < _set.Length; i++)
  19.             {
  20.                 if (_set[i].CompareTo(default(T)) < 0)
  21.                 {
  22.                     return true; // есть отрицательные
  23.                 }
  24.             }
  25.             return false;
  26.         }

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


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

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

15   голосов , оценка 3.867 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы