C#中的类似JS的匿名函数不返回值

问题描述

在JavaScript中,可以编写:

var variableWithALongName = 4;
var amount = 5;

((a) => {
  amount += a * (a + 1);
})(variableWithALongName);

console.log(amount); // 25

这里涉及的函数是一个匿名函数,仅在代码的这一部分中使用,该函数不返回任何值,它只是修改某些内容(它只是做一些事情)。除了该简单函数之外,还有一个更复杂的函数可以使用一些复杂的参数并多次使用它们。

C#中有类似的东西吗?

我知道一个over 10 years old similar question,并且我发现one of its answers似乎比the official documentation更有用,并且更多有关实际匿名功能的信息。但是,我对不返回任何值的功能感兴趣。我目前能想到的与上述JS代码最接近的代码是此代码(例如,使用Unity的Debug.Log):

int variableWithALongName = 4;
int amount = 5;

new Func<int,bool>((a) => {
  amount += a * (a + 1);
  return true;
})(variableWithALongName);

Debug.Log(amount); // 25

但是,该函数仍然返回某些内容,尽管它只是一个从未使用过的(任意)布尔值,但我想知道是否可以避免使C#代码更类似于JS代码。

另外,要清楚一点,我想通过匿名函数,该函数不占用任何名称,即不需要someName = ...之类的,而后跟someName(parameters)之类的函数码。我指出这一点是因为我注意到其中有些也是being called anonymous functions,原因是我不知道。

解决方法

这与提供的js代码的C#等效

    var variableWithALongName = 4;
    var amount = 5;
    (new Action<int>(a=>  amount += a * (a + 1))).Invoke(variableWithALongName);
    Console.WriteLine(amount);

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...