类型或命名空间名称'T'在实现iccomparer接口时找不到

本文关键字:iccomparer 实现 接口 找不到 命名空间 类型 | 更新日期: 2023-09-27 18:18:57

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

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

但是这会抛出一个错误

错误10无法找到类型或命名空间名称"T"缺少using指令或程序集引用?)

我不知道出了什么事。谁能指出我做错了什么吗?

类型或命名空间名称'T'在实现iccomparer接口时找不到

您的GenericComparer不是泛型的-并且您正在实现非泛型IComparer接口。所以不是任何类型的T…您没有声明类型参数T,也没有命名类型T。您可能需要:

public class GenericComparer<T> : IComparer<T>

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

public int Compare(object x, object y)

…但是它会是一个名字很奇怪的类

给定您的类名,我认为您的意思是实现泛型 IComparer<T>而不是非泛型 IComparer

如果是,您需要使您的类泛型,并声明泛型类型参数T

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

您可能打算实现IComparer<T>:

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