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);
正如标题所说,我必须编写一些代码来对 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);