[英]I have a conflict with types using generic interfaces and classes with c#
我要介绍的是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
必须是公共的(或显式的,因为它是接口实现)。 否则,这将是另一个编译错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.