Двусвязный список: Почему нельзя сравнить тип Т - C#

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

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _4laba
{
    class Program
    {
        static void Main(string[] args)
        {
            GenericList<int> list = new GenericList <int>();
            list.Add(10);
            list.Add(12);
            list.Add(13);
            list.Show();
        }
    }
    class GenericList<T>
    {
        private class Node
        {
            private Node next;//скрытая ссылка на следующий элемент
            public Node Next//свойство "следующий элемент"
            {
                get { return next; }
                set { next = value; }
            }
            private Node prev;//скрытая ссылка на следующий элемент
            public Node Prev//свойство "следующий элемент"
            {
                get { return prev; }
                set { prev = value; }
            }  
            private T data;//переменная типа Т, хранит данные
            public T Data//свойство для получения и установки данных типа Т в элементе
            {
                get { return data; }
                set { data = value; }
            }

            public Node(T t)
            {
                next = null;
                data = t;
               
            }
        }
        private Node head;//хранит ссылку на первый элемент в списке
        private Node tail;//хранит ссылку на последний элемент в списке
        public GenericList()//конструктор списка
        {
            head = null;
            tail = null;
        }
        public void Add(T t)
        {
            Node temp = new Node(t);
 
            if(head==null)
            {
                temp.Prev = null;
                head = tail = temp; 
            }
            else
            {
                temp.Prev = tail;
                temp.Next = temp;
                tail = temp;
            }
            
        }
        public void Show()
        {
            ////ВЫВОДИМ СПИСОК С КОНЦА
            Node temp = tail;
            //Временный указатель на адрес последнего элемента
            while (temp != null) //Пока не встретится пустое значение
            {
                Console.WriteLine(temp.Data + " ");//Выводить значение на экран
                temp = temp.Prev; //Указываем, что нужен адрес предыдущего элемента
            }
            Console.WriteLine("\n");
       
         }
 
        public int GetIndex(T data)//достать индекс по значению элемента
        {
            Node temp = tail;
            T TEMP;
            while(temp!=null)
            {
                TEMP = temp.Data;
                if(data==TEMP)
                {
 
                }
            }
        }
    }
}
if(data==TEMP) почему нельзя сравнить тип Т? Нужно перегрузить операцию ==? Если да, то как?

Решение задачи: «Двусвязный список: Почему нельзя сравнить тип Т»

textual
Листинг программы
class NodeList<T>
    {
        // конструктор 
        public NodeList(T value)
        {
            Value = value;
        }
        // кастомный конструктор для вставки в середину
        public NodeList(T value, NodeList<T> next)
        {
            Value = value;
            Next = next;
        }
        // значение узла (data)
        public T Value { get; set; }
        // установка следущего узла в списке, если ничего то NULL (просто сам указатель) 
        public NodeList<T> Next { get; set; }
    }

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


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

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

5   голосов , оценка 4.8 из 5
Похожие ответы