最近由于工作需要使用C#,C#半天lamda表达式和action作为参数使用语法和C++有一些区别,所以记一下
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
"hello world".Say((s1, s2) => MessageBox.Show(s1.ToUpperInvariant(), s2.ToUpperInvariant(), MessageBoxButtons.OK, MessageBoxIcon.Information));
"hello world".Say2((s1) =>
{
return s1.ToUpperInvariant();
});
}
}
public static class Helper
{
public static void Say(this string message, Action<string, string> action)
{
action.Invoke(message, "Welcome");
}
public static void Say2(this string message, Func<string, string> func)
{
Console.WriteLine(func.Invoke(message));
}
}
上面的代码理解说明一下,
Helper类里的两个方法都是string的扩展方法,然后action传递一个方法叫action,通过lamda表达式新建了一个方法。