马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

通过扩展方法对数组进行的一些扩展(二):修复之前的小问题,增加排序

  [复制链接]
查看4376 | 回复4 | 2013-3-4 15:17:20 | 显示全部楼层 |阅读模式
之前的对数组进行扩展的连接和反转两个方法无意中发现一些小问题,在这里重新进行了修改。在连接这个方法里面加了一个重载,感觉效果会更好些。增加了一个排序的方法,以前对数组的排序可以使用Array.Sort()这个方法,但是要求必须实现IComparable这个接口,我感觉限制性太多,所以在方法里面增加委托,这样对数组的排序就可以按照我们的方法随意安排了
这是修改之后的Join方法还有一个重载
[C#] 纯文本查看 复制代码
/// <summary>
        /// 将Array输出为中间用字符连接的字符串
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="originArray">原数组</param>
        /// <param name="conStr">连接分隔符</param>
        /// <returns>输出的字符串</returns>
        public static string Join<T>(this T[] originArray, char conStr)
        {
            int length = originArray.Length;
            if (length == 0)
            {
                return "";
            }
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < length; i++)
            {
                sb.Append(originArray[i].ToString() + conStr);
            }
            return sb.Remove(sb.Length - 1, 1).ToString();
        }

        /// <summary>
        /// 将Array用字符串连接输出
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="originArray"></param>
        /// <param name="conStr"></param>
        /// <returns></returns>
        public static string Join<T>(this T[] originArray, string conStr)
        {
            int length = originArray.Length;
            if (length == 0)
            {
                return "";
            }
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < length; i++)
            {
                sb.Append(originArray[i].ToString() + conStr);
            }
            return sb.Remove(sb.Length  - conStr.Length, conStr.Length).ToString();
        }

新增加的排序方法
[C#] 纯文本查看 复制代码
/// <summary>
        /// 将数组按照一定的排序规则进行重新排列
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="originArray">原数组</param>
        /// <param name="compare">排序规则</param>
        /// <returns></returns>
        public static T[] Sort<T>(this T[] originArray,  Compare<T> compare)
        {
            if (originArray.Length == 0 || originArray.Length == 1)
            {
                return originArray;
            }

            T temp = default(T);
            for (int i = 0; i < originArray.Length; i++)
            {
                for (int j = i + 1; j < originArray.Length; j++)
                {
                    if (compare(originArray[i], originArray[j]))
                    {
                        temp = originArray[i];
                        originArray[i] = originArray[j];
                        originArray[j] = temp;
                    }
                }
            }

            return originArray;
        }


简单的使用示例
[C#] 纯文本查看 复制代码
int[] nums = new int[5] { 3, 1, 5, 2, 3 };
            Console.WriteLine(nums.Sort(delegate(int num1, int num2) {
                return num1 < num2;
            }).Join(' '));


输出 5 3 3 2 1


ibcadmin | 2013-3-4 21:55:02 | 显示全部楼层
好贴就要设精华
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
hebutyll | 2013-3-5 14:45:28 | 显示全部楼层
ibcadmin 发表于 2013-3-4 21:55
好贴就要设精华

谢谢啊,
ibcadmin | 2013-3-5 16:58:34 | 显示全部楼层
已经设了
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
chao2332601 | 2013-6-16 01:35:52 | 显示全部楼层
谢谢分享!!!
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则