使用委託(或匿名函數)求一個未知類型的數組最大值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace DelegateGetMax
{
    delegate int DelMax(object o1, object o2);
    class Program
    {
        /// <summary>
        /// 使用委託求一個不確定類型數組的最大值
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            ////實用委託求字符串數組的最大值
            //object[] str = { "2354tqwafasg", "asgtsa345346t", "w3r3wrsdat4t", "sdgq4w4t46tsdf", "asdgfaweestgwe3", "dagerwet245twreq", "sdfasdfasdfd" };
            //object result = GetMax(str, delegate(object o1, object o2)
            //{
            //    string s1 = (string)o1;
            //    string s2 = (string)o2;
            //    return s1.Length - s2.Length;
            //});
            //Console.WriteLine(result);


            //實用匿名函數求字符串類型的數字求最大值
            //string[] str = { "2354tqwafasg", "asgtsa345346t", "w3r3wrsdat4t", "sdgq4w4t46tsdf", "asdgfaweestgwe3", "dagerwet245twreq", "sdfasdfasdfd" };
            //object result = GetMax(str, (object o1, object o2) =>
            //{
            //    string s1 = (string)o1;
            //    string s2 = (string)o2;
            //    return s1.Length - s2.Length;
            //});
            //Console.WriteLine(result);


            //使用委託求int類型的數組求最大值
            //object[] i = { 124, 15245, 123, 36, 364, 74, 325, 743, 234 };
            //object result = GetMax(i, delegate(object o1, object o2)
            //{
            //    int i1 = (int)o1;
            //    int i2 = (int)o2;
            //    return i1 - i2;
            //});
            //Console.WriteLine(result);


            //實用匿名函數求int類型的數字求最大值
            object[] i = { 124, 15245, 123, 36, 364, 74, 325, 743, 234 };
            object result = GetMax(i, (object o1, object o2) =>
            {
                int i1 = (int)o1;
                int i2 = (int)o2;
                return i1 - i2;
            });
            Console.WriteLine(result);


            Console.ReadKey();
        }
        public static object GetMax(object[] o, DelMax del)
        {
            object max = o[0];
            for (int i = 0; i < o.Length; i++)
            {
                if (del(max, o[i]) < 0)
                {
                    max = o[i];
                }
            }
            return max;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章