如果想在一个委托中添加一个可在外部修改的参数,可以使用关键词ref,它会将当前使用的参数传递进去,并且由于使用的ref,所以传递的不是参数而是地址,下面是例子:
void Use()
{
bool isBreak = false;
int temp = 0;
UseNum((num) =>
{
if (num == 3)
{
temp = num;
isBreak = true;
}
}, ref isBreak);
}
void UseNum(Action<int> action, ref bool IsBreak)
{
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8 };
for (int i = 0; i < nums.Length; i++)
{
action(nums[i]);
if (IsBreak)
{
break;
}
}
}