Ошибка: Оператор == не может применяться к операндам Т и Т - C#
Формулировка задачи:
В стиле обобщенного программирования хотел сделать контейнеры вектора и связного списка. Для ясности замечу, что вектор у меня сработал нормально. Как начал писать связный список( в другом классе, в том же пространстве имен), класс вектора начал ругаться на то место, где я сравниваю значения обобщенного типа. А именно:
Я так понял, что ошибка возникла из-за того, что я начал описывать класс связного списка, в котором не определена операция сравнения, однако, перегрузка оператора в классе связного списка привела к той же ошибке:
Не судите строго, может, я чего и не уловил, но в свою защиту скажу, что недавно всерьез принялся изучать c# =)
Листинг программы
- //Исключение элементов из массива
- public void Exclude(T val)
- {
- int k = 0;
- for (int i = 0; i < mPos-k; i++) {
- while (mVal [i + k] == val) //<- Вот здесь
- k++;
- mVal [i] = mVal [i + k];
- }
- mPos = mPos - k;
- }
Листинг программы
- public class MyListElement<T>
- {
- public T mVal;
- public MyListElement<T> mNext;
- public MyListElement( T val, MyListElement<T> next)
- {
- mVal = val;
- mNext = next;
- }
- public static MyListElement<T> operator ==(MyListElement<T> c1, MyListElement<T> c2)
- {
- return (c1.mVal==c2.mVal); // Тут
- }
- public static MyListElement<T> operator !=(MyListElement<T> c1, MyListElement<T> c2)
- {
- return (c1.mVal!=c2.mVal); // И тут.
- }
- }
Решение задачи: «Ошибка: Оператор == не может применяться к операндам Т и Т»
textual
Листинг программы
- where T : IEquatable<T>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д