C# 不支持约束的泛型方法

C# 不支持约束的泛型方法,c#,generics,C#,Generics,我正在尝试编写一个通用方法,它应该支持exint、double、float等的内在类型。 方法是对数组进行排序。 我得到一个编译时错误,说“不能将运算符

我正在尝试编写一个通用方法,它应该支持exint、double、float等的内在类型。 方法是对数组进行排序。 我得到一个编译时错误,说“不能将运算符<应用于类型T”,我理解,但我如何解决它?我应该将类设置为泛型并使用约束吗? 这是我的密码:

public static T[] Sort<T>(T[] inputArray) 
{
    for (int i = 1; i < inputArray.Length; i++)
    {
        for (int j = i - 1; j >= 0; j--)
        {
            ***if (inputArray[j + 1] < inputArray[j])***
            {
                T temp = inputArray[j + 1];
                inputArray[j + 1] = inputArray[j];
                inputArray[j] = temp;
            }
            else
            {
                break;
            }
        }
    }
    return inputArray;
}
公共静态T[]排序(T[]输入阵列)
{
for(int i=1;i=0;j--)
{
***if(输入阵列[j+1]<输入阵列[j])***
{
温度=输入阵列[j+1];
输入阵列[j+1]=输入阵列[j];
输入阵列[j]=温度;
}
其他的
{
打破
}
}
}
返回输入;
}

没有可以应用的通用约束将类型限制为那些重载了
的类型。没有可以应用的通用约束将类型限制为那些重载了
的类型。C#不支持对类型支持的运算符的通用约束。但是,.NET提供了许多提供类似功能的接口。在这种情况下,您需要添加一个通用约束,以确保
T
实现

publicstatict[]排序(T[]输入阵列),其中T:IComparable
{
for(int i=1;i=0;j--)
{
if(输入阵列[j+1]。比较(输入阵列[j])<0)
{
温度=输入阵列[j+1];
输入阵列[j+1]=输入阵列[j];
输入阵列[j]=温度;
}
其他的
{
打破
}
}
}
返回输入;
}
C#不支持类型所支持的运算符的通用约束。但是,.NET提供了许多提供类似功能的接口。在这种情况下,您需要添加一个通用约束,以确保
T
实现

publicstatict[]排序(T[]输入阵列),其中T:IComparable
{
for(int i=1;i=0;j--)
{
if(输入阵列[j+1]。比较(输入阵列[j])<0)
{
温度=输入阵列[j+1];
输入阵列[j+1]=输入阵列[j];
输入阵列[j]=温度;
}
其他的
{
打破
}
}
}
返回输入;
}

答案是你们不能,所以有一篇关于“通用运算符约束”的很好的帖子。。。试着搜索-还有,顺便说一句,你们不使用的原因是什么?答案是你们不能,有一篇关于“通用运算符约束”的很好的帖子。。。尝试搜索-还有,顺便说一句,你不使用的原因是什么?回答得好@Servy-这就是这些接口存在的基本原因。@p.s.w.g看起来我的帐户上有一些串行投票。如果不是两个DV,那么至少应该有一个DV。今晚我们将看看是两者都消失了,还是只有一个消失了。回答得好@Servy-这就是这些接口存在的基本原因。@p.s.w.g看起来我的帐户上有一些连续投票。如果不是两个DV,那么至少应该有一个DV。我们看看今晚是两个人都走还是只有一个人走。
public static T[] Sort<T>(T[] inputArray) where T : IComparable<T>
{
    for (int i = 1; i < inputArray.Length; i++)
    {
        for (int j = i - 1; j >= 0; j--)
        {
            if (inputArray[j + 1].CompareTo(inputArray[j]) < 0)
            {
                T temp = inputArray[j + 1];
                inputArray[j + 1] = inputArray[j];
                inputArray[j] = temp;
            }
            else
            {
                break;
            }
        }
    }
    return inputArray;
}