目录
本篇文章来分享一下C#如何实现通用的排序功能。在项目中经常会使用到排序的方法,那如何使排序方法更加通用呢?可以通过泛型,接口,委托来实现。
通用排序功能
1.升序
为了方便理解,从基本数据类型(int)进行分析,以冒泡排序为例
/// <summary>
/// 整型数组升序排序(冒泡排序)
/// </summary>
/// <param name="array">数组</param>
public static void OrderByInt(int[] array)
{
for (int i = 0; i < array.Length; ++i)
{
for (int j = i + 1; j < array.Length; j++)
{
if (array[i] > array[j])
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
如果也要对字符串(string)进行比较,那就可以使用比较方法CompareTo
/// <summary>
/// 整型数组升序排序(冒泡排序)
/// </summary>
/// <param name="array">数组</param>
public static void OrderByInt(int[] array)
{
for (int i = 0; i < array.Length; ++i)
{
for (int j = i + 1; j < array.Length; j++)
{
if (array[i].CompareTo(array[j]) > 0)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
/// <summary>
/// string数组升序排序(冒泡排序)
/// </summary>
/// <param name="array">数组</param>
public static void OrderByString(String[] array)
{
for (int i = 0; i < array.Length; ++i)
{
for (int j = i + 1; j < array.Length; j++)
{
if (array[i].CompareTo(array[j]) > 0)
{
String temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
要想更加适用,就可以使用泛型,并使用接口约束,只要提供了比较方法的的类型,就可以进行排序
/// <summary>
/// 任何数据类型数组升序排序(冒泡排序)
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="array">数组</param>
public static void OrderByType<T>(T[] array) where T : IComparable<T>
{
for (int i = 0; i < array.Length; ++i)
{
for (i

最低0.47元/天 解锁文章
1779

被折叠的 条评论
为什么被折叠?



