C#如何使它能够对字符串或整数进行排序而又不会重载?

时间:2019-02-17 01:22:05

标签: c# sorting oop overloading comparator

正如标题所述,我必须编写一些代码来对字符串的数组/列表或整数进行排序。因为我已经很长时间没有使用C#/ Java了,所以我的OOP知识真的很生锈。

有没有办法做到这一点,所以我只需要编写一个函数即可,而不必重载该函数

(例如InsertSort(int [] arr)和InsertSort(string [] arr))

我听说过有关使用IComparable或Comparator的一些知识,并查看了两者的文档,但在我看来,它们似乎更像Objects。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

通用方法应该是您的朋友。泛型允许您将方法中使用的类型的说明推迟到程序中实际使用时为止。您可以在通用here上阅读更多内容。

public T[] InsertSort<T>(T[] source)
{
// Do something

}

可以使用以下字符串/ int数组来调用它。

var intArray = new int[]{1,2,3};
var stringArray = new string[]{"1","2","3"};
InsertSort(intArray);
InsertSort(stringArray);

答案 1 :(得分:0)

要开始使用,您可以尝试使用这种方法。

public static IEnumerable<T> InsertSort<T>(IEnumerable<T> tmp)
{
  //... Perform sorting
  //... Return the sorted results as IEnumerable 
}

您将能够发送列表或所选类型的数组。

用法:

List<int> listA = new List<int>();
var sortedListA = InsertSort(listA);

string[] arrA = new string[5];
var sortedArrayA = InsertSort(arrA);