自学内容网 自学内容网

C#自定义工具类-数组工具类

目录

数组工具类基本操作

1.排序:升序,降序

2.查找

1)查找最值:最大值,最小值

2)查找满足条件的单个对象

3)查找满足条件的所有对象

4)选取数组中所有对象的某一字段

完整代码

测试

1.测试代码

2.测试结果


       本篇文章来分享一下如何实现数组工具类。工具类,一般具有很强的通用性,复用性很强,在需要时就可以移植到项目,可以让我们的工作更加快捷方便。今天要分享的数组工具类实现了有关数组基本操作。

数组工具类基本操作

1.排序:升序,降序

       可以参考 【一文读懂】C#如何实现通用的排序功能 进行理解

/// <summary>
/// 选择委托
/// 返回数据类型T的属性Tkey的值
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <typeparam name="Tkey">数据类型T的字段</typeparam>
/// <returns>选择的属性</returns>
public delegate TKey SelectHandler<T, TKey>(T t);//注意是写在类外

/// <summary>
/// 使用委托对任何数据类型数组进行升序排序
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <typeparam name="Tkey">数据类型T的字段</typeparam>
/// <param name="array">数据类型T的数组</param>
/// <param name="selectHandler">选择委托的对象</param>
public static void OrderBy<T, Tkey>(T[] array, SelectHandler<T, Tkey> selectHandler)
    where Tkey : IComparable<Tkey>
{
    for (int i = 0; i < array.Length; ++i)
    {
        for (int j = i + 1; j < array.Length; ++j)
        {
            //将委托已经取得数据类型的属性的进行比较
            if (selectHandler(array[i]).CompareTo(selectHandler(array[j])) > 0)
            {
                T temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }
    }
}

/// <summary>
/// 使用委托对任何数据类型数组进行降序排序
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <typeparam name="Tkey">数据类型T的字段</typeparam>
/// <param name="array">数据类型T的数组</param>
/// <param name="selectHandler">选择委托的对象</param>
public static void OrderByDescending<T, Tkey>(T[] array, SelectHandler<T, Tkey> selectHandler)
    where Tkey : IComparable<Tkey>
{
    for (int i = 0; i < array.Length; ++i)
    {
        for (int j = i + 1; j < array.Length; ++j)
        {
            //将委托已经取得数据类型的属性的进行比较
            if (selectHandler(array[i]).CompareTo(selectHandler(array[j])) < 0)
            {
                T temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }
    }
}

2.查找

1)查找最值:最大值,最小值

/// <summary>
/// 查找最大值
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <typeparam name="Tkey">数据类型T的字段</typeparam>
/// <param name="array">数据类型T的数组</param>
/// <param name="selectHandler">选择委托的对象</param>
/// <returns>返回T类型的数组中字段Tkey最大的数据</returns>
public static T Max<T, Tkey>(T[] array, SelectHandler<T, Tkey> selectHandler)
    where Tkey : IComparable<Tkey>
{
    T temp = array[0];
    for (int i = 1; i < array.Length; ++i)
    {
        //将委托已经取得数据类型的属性的进行比较
        if (selectHandler(temp).CompareTo(selectHandler(array[i])) < 0)
 

原文地址:https://blog.csdn.net/grapefruit_lyy/article/details/142558668

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!