今天在参看别人的博客代码是,发现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);