C#如何使一个函数可以在不重载的情况下对字符串或整数进行排序?

C# how to make it so that a function that can sort strings or ints without overloading?

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

有没有办法做到这一点,所以我只需要编写一个函数,这样我就不必重载函数了

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

我听说过一些关于使用 IComparable 或 Comparator 的信息,我查看了两者的文档,但在我看来它们更像是 Objects。

感谢您的帮助!

泛型方法应该是你的朋友。泛型允许您将方法中使用的类型规范推迟到程序中实际使用时。您可以阅读有关通用 [​​=12=].

的更多信息
public T[] InsertSort<T>(T[] source)
{
// Do something

}

这可以使用 strings/int 数组调用,如下所示。

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

首先,您可以尝试类似这种方法。

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);