实现IComparer接口时找不到类型或命名空间名称“T”

时间:2014-08-20 07:41:34

标签: c# asp.net icomparer

我正在尝试在我的代码中实现IComparer接口

public class GenericComparer : IComparer
{
    public int Compare(T x, T y)
    {

        throw NotImplementedException;
    }
}

但这会引发错误

  

错误10类型或命名空间名称' T'找不到(是你吗?   缺少using指令或程序集引用?)

我不知道,什么是wron。任何人都可以指出我做错了吗?

3 个答案:

答案 0 :(得分:3)

您的GenericComparer不是通用的 - 您正在实施non-generic IComparer interface。所以不是任何类型T ...你还没有声明类型参数T,并且没有名为T的命名类型。你可能想要:

public class GenericComparer<T> : IComparer<T>

或者,您需要将Compare方法更改为:

public int Compare(object x, object y)

......但那将是一个非常奇怪的命名类。

答案 1 :(得分:1)

鉴于您的课程名称,我认为您打算实施通用 IComparer<T>而不是非通用 IComparer。< / p>

如果是这样,您需要使您的类具有通用性,并声明泛型类型参数T

public class GenericComparer<T> : IComparer<T>
{
    public int Compare(T x, T y)
    {    
        throw NotImplementedException;
    }
}

答案 2 :(得分:0)

您可能打算实施IComparer<T>

public class GenericComparer<T> : IComparer<T>
{
    public int Compare(T x, T y)
    {
        throw NotImplementedException;
    }
}