public delegate string MyToString(int iValue);
static void Main(string[] args)
{
//第一种形态
{
MyToString mytostring = new MyToString(delegate(int iValue)
{
return iValue.ToString();
});
Console.WriteLine(mytostring.Invoke(9988));
}
//第二种形态 去掉delegate 变成 =>
{
MyToString mytostring = new MyToString((int iValue)=>
{
return iValue.ToString();
});
Console.WriteLine(mytostring.Invoke(9988));
}
//第三种形态 去掉参数类型 因为声明委托的时候,已经声明了参数类型
{
MyToString mytostring = new MyToString((iValue) =>
{
return iValue.ToString();
});
Console.WriteLine(mytostring.Invoke(9988));
}
//第四种形态 直接去掉了 new部分内容
{
MyToString mytostring = (iValue) =>
{
return iValue.ToString();
};
Console.WriteLine(mytostring.Invoke(9988));
}
//继续优化 由于方法体只含有一行内容 可以直接去掉大括号 去掉大括号的同时 需要去掉 return
{
MyToString mytostring = (iValue) =>iValue.ToString();
Console.WriteLine(mytostring.Invoke(9988));
}
//继续优化 如果参数只有一个的时候,可以不要括号
{
MyToString mytostring = iValue => iValue.ToString();
Console.WriteLine(mytostring.Invoke(9988));
}
}
格式
方法参数=>方法体
Lambda只能依靠委托而存在
Lambda本质就是一个匿名方法,也就是一个方法