簡體   English   中英

我與使用通用接口和C#類的類型沖突

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM