我与使用通用接口和类的类型有冲突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'
答
变化ListError Insert<T>(T x, int p)
到ListError Insert(T x, int p)
。编译器认为您在Insert
中指定了一个新类型T
。
注意:Insert
需要公开(或明确的,因为它是一个接口实现)。否则,这将是另一个编译错误。
+0
它工作出色。非常感谢! –
+0
如果您满意,请将此标记为已回答。谢谢。 –
请阅读编译器警告;你应该得到一个解释问题的警告。 –