Вызов оператора 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;
}