Func的使用方法(转载)

public delegate TResult Func <T, TResult>(T arg)数组

这是一个委托方法,这个方法有一个参数T(T arg),好比int arg,string arg等等;一个返回值TResult; 要想让输入的参数arg返回TResult,则必须将一个带有T arg参数的方法用委托的方式赋值给Func方法;好比以下的方法就符合Func<string,int>这个委托的定义:函数

private int GetAge(string age)
{
    return Int32.Parse(age);
}

 下面用一个比较详细的实例来讲明这个方法的用法,其中会用到Lambda表达式(只是匿名函数的一种表达方式而已,没必要大惊小怪):spa

定义委托:code

//这是一个计算年龄的方法
//输入一个字符串数组,其中的字符串分别通过指定的conveter委托方法的运算之后
//字符串值就变成了整数数组
public int[] GetGoodAge(string[] rawAges, FUNC<string, int> conveter)
{
    List<string> result = new List<string>();
    foreach(string age in rawAges)
    {
        result.Add(conveter(age));
    }
    return result.ToArray();
}

在主函数能够这样来写:blog

Main()
{
     string[] ages = new string[] {"123lk","345op","909ka","234ja"};
//输入一组字符串数组
     int[] result =  GetGoodAge(ages, age=> Int32.Parse(age.Substring(0,2)));
//调用委托方法int[] GetGoodAge(string[],Func<string,int> conventer)
//这里conventer就是一个匿名函数,用的是Lambda表达式
//表示输入参数age,而后返回Int32.Parse(age.Substring(0,2))的值
//这个返回值输入到result数组中
     foreach(int age in result)
     {
        Console.WriteLine(age);
     }
}

其实这个委托方法的主要特色就是节省代码,若是有多个处理输入和输出的方法,直接将函数做为参数传进去就能够了,省去了反复调用的麻烦。字符串

相关文章
相关标签/搜索