C#匿名方法
以下展示匿名方法实现委托的简单示例:
//一般实现
delegate void AddDel(int x, int y);
//实现匿名方法的委托
delegate void AnonymousDel(int x, int y);
private void Add(int x, int y)
{
richTextInfo.ShowInfo($"N:{x + y},x:{x},y:{y}");
}
public void AnoymousMethod()
{
int x = 1, y = 2;
//非匿名方法实现,需显式声明Add方法
AddDel delAdd = Add;
delAdd(x, y);
//*************
//匿名方法实现,无需声明Add方法
AnonymousDel del = delegate
{
int z = 1;//匿名方法内声明的变量只作用于匿名方法内部
x ++;//匿名方法可操作该方法外部的变量
richTextInfo.ShowInfo($"A:{x + y},x:{x},y:{y}z:{z}");
};
del(x, y);//调用匿名方法
richTextInfo.ShowInfo($"x:{x}");//此处注意,虽然离开匿名方法,但x值已被改变
//变量捕获
//外部变量:是指作用域内包括匿名方法的局部变量或参数
//捕获的外部变量:是指在匿名方法中使用的外部变量
}

浙公网安备 33010602011771号