c# - 对一个我不知道它是什么类型的集合进行排序?

标签 c# collections

当我不知道在运行时将传递给该集合的对象类型时,.NET 中是否有一种方法可以对集合进行排序,并且还可以避免反射。

有什么想法吗?

最佳答案

您确实需要某种比较元素的方法。通常的方式是要求IComparable:

class MyCollection<T> where T : IComparable<T>
{
}

或者使用 IComparer,用于排序方法或构造函数:

class MyCollection<T> // where T : IComparable<T>
{
    void Sort(IComparer<T> comparer) 
    {
        if  (comparer.Compare(a, b) > 0) { ... }
    }
}

关于c# - 对一个我不知道它是什么类型的集合进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346146/

相关文章:

java - 如何将集合拆分为子集合?

java - 无法将集合类作为泛型方法中的参数传递

c# - xpath where 子句返回 0 个节点

c# - 无法将方法组 'Read' 转换为非委托(delegate)类型 'bool'

java - 在 Java Collections Map<Key,?> 中 "?"指的是什么?

arrays - 集合/数组包含方法

java - 反转通用列表中的项目

c# - 系统.ServiceModel.Web .NET Core

c# - 查找网络中的所有IP地址

c# - 我需要做一个直方图拉伸(stretch)