如何在c#中创建IComparable []?

时间:2013-07-19 05:19:39

标签: c# icomparable

public static void sort(IComparable[] a)
{
    int N = a.Length;
    for (int i = 0; i < N; i++)
    {
        for (int j = i; j > 0 && less(a[j], a[j - 1]); j--)
        {
           exch(a, j, j - 1);
        }
        isSorted(a, 0, i);
    }
    isSorted(a);
}

上面是我在书中找到的简单排序代码,代码是用java编写的,我尝试用c#翻译它。 一切都很好,除了如何传递参数。 Int32实现icamparable,但是如何创建IComparable[]的实例并传递给排序函数。

IComparable[] b = new int[] { 2, 3, 3, 3, 3, 3, 3, 3 };

不起作用。

1 个答案:

答案 0 :(得分:5)

如果要使用IComparable数组初始化int,则需要创建副本。最容易编写的代码是使用LINQ的CastToArray

 IComparable[] b = (new int[] { 2, 3, 3, 3, 3, 3, 3, 3 })
     .Cast<IComparable>().ToArray();

注意:通常你会使用泛型来写这个方法 - 比如

 public static void Sort<T>(T[] a) where T: IComparable<T>