使用IComparable <string> </string>按长度对字符串数组进行排序

时间:2014-01-04 02:12:27

标签: string sorting icomparable

我在这里缺少一些小东西,使用Array.SortIComparable<T>按字符串长度对字符串数组进行排序。 <{1}}方法不会过载。

int CompareTo(string)

1 个答案:

答案 0 :(得分:1)

而不是尝试覆盖CompareTo类上的string方法(因为string类已被密封而无法完成此操作),请创建IComparer<string>类并将其实例传递给Arrays.Sort()

public class StringLengthComparer : IComparer<string>
{
    public int Compare(string x, string y)
    {
        if (x.Length > y.Length) 
            return 1;

        if (x.Length < y.Length) 
            return -1;

        return 0;
    }
}

public class Program
{
    static void Main(string[] args)
    {
        string[] arrayStrings = 
                 new string[] { "a", "b", "the", "roof", "is", "on", "fire" };

        Array.Sort(arrayStrings, new StringLengthComparer());

        foreach (var item in arrayStrings)
        {
            Console.WriteLine(item);
        }
    }
}

输出:

a
b
is
on
the
roof
fire