定义一个类 类名ArrayOperation.类中定义如下静态方法:  
(1) 求双精度浮点型数组的平均值,方法名:ComputeAverage
(2) 求双精度浮点型数组的和,方法名:ComputeSum
(3) 求双精度浮点型数组的最大值,方法名:ComputeMax
(4) 求双精度浮点型数组的最小值,方法名:ComputeMin
(5) 求双精度浮点型数组的排序,方法名:ComputeSort
(6) 最后定义一个Test类,测试这五个方法

解决方案 »

  1.   

    本帖最后由 caozhy 于 2011-06-22 11:06:56 编辑
      

  2.   

    我敢保证,老师看到LZ如此熟练的使用lambda,肯定不会骂人。
      

  3.   

    来一个动态方法的。
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Test.PreformTest();            
            }
        }    class ArrayOperation : System.Dynamic.DynamicObject
        {
            public Func<double[], double[]> ComputeSort = x => x.OrderBy(y => y).ToArray();
        
            public override bool TryInvokeMember(System.Dynamic.InvokeMemberBinder binder, object[] args, out object result)
            {
                MethodInfo[] mis = typeof(Enumerable).GetMethods();
                MethodInfo mi = mis.Where(x => x.Name == binder.Name.Substring(7) && x.ReturnType == typeof(double) && x.ToString().Contains("IEnumerable`1[System.Double]")).First();
                result = mi.Invoke(null, new object[] { (args[0] as double[]).AsEnumerable<double>() });
                return true;
            }    }    class Test
        {
            public static void PreformTest()
            {
                double[] array = new double[] { 1.08, 3.5, 5.0, 0.98, -1.1, 4.26, 7.88, 3.6, 1.80 };
                dynamic o = new ArrayOperation();
                Console.WriteLine("数据:");
                array.ToList().ForEach(x => Console.Write(x + "\t"));
                Console.WriteLine("\r\nAverage = {0}, Sum = {1}, Max = {2}, Min = {3}.",
                    o.ComputeAverage(array),
                    o.ComputeSum(array),
                    o.ComputeMax(array),
                    o.ComputeMin(array));
                Console.WriteLine("排序:");
                double[] sorted = o.ComputeSort(array);
                sorted.ToList().ForEach(x => Console.Write(x + "\t"));
                Console.WriteLine();
            }
        }
    }