标签: icomparablet

C#box枚举错误与泛型

我不明白这里发生了什么......

我有以下错误: 该类型'TestApp.TestVal'不能用作'T'泛型类型或方法中的类型参数'TestApp.SomeClass<T>'.没有来自装箱转换'TestApp.TestVal''System.IComparable<TestApp.TestVal>'.

以下代码发生此错误:

public enum TestVal
{
    First,
    Second,
    Third
}

public class SomeClass<T>
    where T : IComparable<T>
{
    public T Stored
    {
        get
        {
            return storedval;
        }
        set
        {
            storedval = value;
        }
    }
    private T storedval;
}

class Program
{
    static void Main(string[] args)
    {
        //Error is on the next line
        SomeClass<TestVal> t = new SomeClass<TestVal>(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

由于枚举是int默认的并且int实现了IComparable<int>接口,所以看起来应该没有错误....

c# generics enums icomparablet

5
推荐指数
2
解决办法
4018
查看次数

此搜索方法中IComparable和IComparable <T>之间的差异

我知道,有一个很大的区别IComparable,并IComparable<T>在一般情况下,看到,但在这个搜索方法就没有任何区别,还是会?

public static int Search<T>(List<T> a, T target) where T : IComparable
{
    for (int i = 0; i < a.Count; i++)
    {
        if (target.CompareTo(a[i]) == 0)
            return i;
    }
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

相比:

public static int Search<T>(List<T> a, T target) where T : IComparable<T>
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

两者都会起作用并给出相同的结果吗?

c# icomparable icomparablet

4
推荐指数
1
解决办法
523
查看次数

如何在 Linq OrderBy 子句中应用默认的 IComparable&lt;T&gt;

我有一个类型,它在实现IComparable<T>IComparable. 我没有从 LINQ 得到我期望的结果,基本上看起来好像IComparable<T>没有应用该类型实现的。

我以为我会用以下形式的表达式得到我想要的结果:

var result = MyEnumerable<T>.OrderBy(r => r); 
Run Code Online (Sandbox Code Playgroud)

其中T自身实现IComparable<T>。它没有发生。

我可以看到相关的问题,其中IComparable<T>为排序指定了特定的类,但我找不到一个使用自己IComparable<T>实现的默认值的问题T

我的语法显然不正确。请问正确的语法是什么?

提前致谢。

linq sql-order-by icomparablet

3
推荐指数
1
解决办法
1987
查看次数

数字基础上的订单列表<T>

我正在使用此代码来排序数字基础下降的列表

ItemsList.OrderByDescending(x => x.Views, new IntComparer());

public class IntComparer : IComparer<long>
{
    IComparer<long> Members;

    public int Compare(long x, long y)
    {
        return Math.Sign(x - y);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它根本没有订购:S任何帮助PLZ

c# generics sql-order-by icomparer icomparablet

0
推荐指数
1
解决办法
409
查看次数