2010-03-06 10 views
0

J'ai vraiment du mal à corriger mon code, je me demandais s'il y avait quelqu'un là-bas qui pourrait m'aider.C#: Quelqu'un sait-il comment résoudre ce problème? : Le type ou le nom d'espace de noms 'T' est introuvable

Fondamentalement im obtenir l'erreur suivante:

n'a pas pu être trouvé le nom de type ou espace de noms « T » (vous manque une directive à l'aide ou une référence d'assemblage?)

Voici mes classes:

classe programme:

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace LinkedListGen 

{ 
    class program 
    { 
     public static void Main(string[] args) 
     { 
      LinkListGen<T> testList = new LinkListGen<T>(); 
      Console.ReadKey(); 
     } 
    } 
} 

LinkGen classe:

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace LinkedListGen 
{ 
class LinkGen<T> 
{ 
    private T data; 
    private LinkGen<T> next; 

    public LinkGen(T item) 
    { 
     data = item; 
     next = null; 
    } 

    public LinkGen(T item, LinkGen<T> list) 
    { 
     data = item; 
     next = list; 
    } 

    public LinkGen<T> TailList 
    { 
     set { this.next = value; } 
     get { return this.next; } 
    } 

    public T HeadList 
    { 
      set { this.data = value; } 
      get { return this.data; } 
     } 

    } 
} 

LinkListGen Classe:

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace LinkedListGen 
{ 
public class LinkListGen<T> where T : IComparable 
{ 
    private LinkGen<T> list; 

    public LinkListGen() //initialise list to be empty 
    { 
     list = null; 
    } 

    public void AddItem(T item) 
    { 
     list = new LinkGen<T>(item, list); 
    } 
    public string DisplayList() //write items to string 
    { 
     LinkGen<T> temp = list; 
     string buffer = ""; 
     while (temp != null) 
     { 
      Console.WriteLine(temp.HeadList); 
      temp = temp.TailList; 
     } 
     return buffer; 
    } 
    public int NumberOfItems() 
    { 
     LinkGen<T> temp = list; 
     int count; 
     count = 0; 
     while (temp != null) 
     { 
      count++; 
      temp = temp.TailList; 
     } 
     Console.Out.WriteLine("There are " + count + "items recorded."); 
     return count; 
    } 

    public bool IsPresentItem(T item) 
    { 
     bool txf; 
     LinkGen<T> temp = list; 
     int count; 
     count = 0; 
     while (temp != null) 
     { 
      if (item.Equals(temp.HeadList)) 
      { 
       count++; 
      } 
      temp = temp.TailList; 
     } 
     if (count > 0) 
     { 
      Console.Out.WriteLine("There are " + count + " instances of " + item + "."); 
      txf = true; 
     } 
     else 
     { 
      Console.Out.WriteLine("There are no instances of " + item + "."); 
      txf = false; 
     } 
     return txf; 

    } 

    public void RemoveItem(T item) 
    { 
     LinkGen<T> prev = list; 
     LinkGen<T> curr = list; 
     if (item.Equals(curr.HeadList)) 
      list = curr.TailList; 
     else 
     { 
      while (curr != null) 
      { 
       if (item.Equals(curr.HeadList)) 
       { 
        prev.TailList = curr.TailList; 
       } 
       else 
       { 
        prev = curr; 
        curr = curr.TailList; 
       } 
      } 
     } 
    } 
} 
} 

L'objectif est de créer une liste chaînée générique

Im vraiment à mon esprit fin et apprécierait toute aide offerte.

+0

erreur sur quelle ligne de code? –

Répondre

10

Vous devez spécifier un type de béton ici, plutôt que l'espace réservé de type, T:

public static void Main(string[] args) 
    { 
     LinkListGen<T> testList = new LinkListGen<T>(); 
        ^       ^
     Console.ReadKey(); 
    } 

Par exemple:

 LinkListGen<string> testList = new LinkListGen<string>(); 
+0

Ahh c'est juste un espace réservé alors. Je pensais que je me trompais quand j'ai essayé de le remplacer par un type, idiot. Merci beaucoup. – user287572

6
LinkListGen<T> testList = new LinkListGen<T>(); 

Vous devez remplacer 'T' ici avec le type que vous essayez d'utiliser pour votre liste générique.