.NET Framework 3.5 引入了变体支持,用于在 C# 中匹配所有委托的方法签名和委托类型。 这表明不仅可以将具有匹配签名的方法分配给委托,还可以将返回派生程度较大的派生类型的方法分配给委托(协变),或者如果方法所接受参数的派生类型所具有的派生程度小于委托类型指定的程度(逆变),也可将其分配给委托。 这包括泛型委托和非泛型委托。
Action<>和Func<>一样,只是不包含返回值,所有的都是参数类型
delegate(int num)是匿名方法
private void button1_Click(object sender, EventArgs e)
{
string aaa = AAA(999, delegate()
{
//方法体,想干什么就干什么,外面已经包裹了try catch
return "";
});
MessageBox.Show(aaa);
}
public static string AAA(int num, Func<string> func)
{
try
{
return func();
}
catch (Exception ex)
{
return "num:"+num+" Exception:"+ex.Message;
}
}