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