泛型委托Func()

今天在参看别人的博客代码是,发现Func<string,string>()代码,以前没有看见过。特此记录下来。

HandlerItem(exchangeValues, key, StringHandlerHelper.Change);

//在以上语句中,直接传递方法名。

private void HandlerItem(RouteValueDictionary values, string key, Func<string, string> handler)
{
    if (!values.ContainsKey(key)) return;

    var v = values[key];
    if (!(v is string)) return;

    values[key] = handler(v as string);

   //具体的参数传递,方法调用执行,返回值的赋值,在    values[key] = handler(v as string);   语句中执行。
}

public static string Change(string s)
{
    StringBuilder sb = new StringBuilder();
    int index = 0;

    foreach (var c in s)
    {
        if (c >= 'A' && c <= 'Z')   //c等于大写字母时,加入'-',然后加入小写的c。
        {
            if (index > 0)
                sb.Append(type);
            sb.Append(char.ToLower(c));
        }
        else if (c == type)    //c等于'-'时,加入'--'。
        {
            sb.Append(type);
            sb.Append(type);
        }
        else                   //只加入字母c。
        {
            sb.Append(c);
        }
        index++;
    }
    return sb.ToString();
}

// 摘要:
//     封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。
//
// 参数:
//   arg:
//     此委托封装的方法的参数。
//
// 类型参数:
//   T:
//     此委托封装的方法的参数类型。
//
//   TResult:
//     此委托封装的方法的返回值类型。
//
// 返回结果:
//     此委托封装的方法的返回值。
[TypeForwardedFrom("System.Core, Version=3.5.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089")]
public delegate TResult Func<in T, out TResult>(T arg);

转载于:https://www.cnblogs.com/lanchong/archive/2011/12/06/2278318.html

猜你喜欢

转载自blog.csdn.net/weixin_33919941/article/details/94705009