我与使用通用接口和类的类型有冲突c#

问题描述:

我在C#中引入了通用接口和clases,并且存在一个我无法处理的问题,我会在这里共享代码可以帮助我。我与使用通用接口和类的类型有冲突c#

enum ListError 
{ 
    Ok = 0, 
    NoMemory, 
    ErrorPosition 
} 

interface IList<T> 
{ 

    int End(); 

    ListError Insert<T>(T x, int p); 

} 

class ListArrays<T>: IList<T> 
{ 
    const int MAX = 100; 

    T [] data = new T[MAX]; 
    int last = 0; 

    public int End() 
    { 
     return last+1; 
    } 

    ListError Insert<T>(T x, int p) 
    { 
     if (last >= MAX) 
      return ListError.NoMemory; 
     if (p > last || p < 0) 
      return ListError.ErrorPosition; 
     for (int q = last; q >= p; q--) 
      data[q] = data[q - 1]; 
     last++; 
     data[p] = x; 
     return ListError.Ok; 
    } 
} 

我有一个编译时错误的战斗中,其中列明了线

data[p] = x; 

Cannot implicitly convert type 'T [c:\Users\MartinD_PC\Documents\VisualStudio 2013\Projects\Aho_Hopcroft_Ullman\Aho_Hopcroft_Ullman\Chapter_2\ListaArreglos.cs(9)]' to 'T' 
+0

请阅读编译器警告;你应该得到一个解释问题的警告。 –

变化ListError Insert<T>(T x, int p)ListError Insert(T x, int p)。编译器认为您在Insert中指定了一个新类型T

注意:Insert需要公开(或明确的,因为它是一个接口实现)。否则,这将是另一个编译错误。

+0

它工作出色。非常感谢! –

+0

如果您满意,请将此标记为已回答。谢谢。 –