C# 中类似 JS 的匿名函数没有 return 值

JS-like anonymous function in C# that doesn't return a value

在JavaScript中可以这样写:

var variableWithALongName = 4;
var amount = 5;

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

console.log(amount); // 25

这里涉及到的函数是一个匿名函数,只在这部分代码中使用,没有return任何值,它只是修改一些东西(it just do some stuff)。除了那个简单的函数,可能还有一个更复杂的函数,它接受一些复杂的参数并多次使用它们。

C# 中有类似的东西吗?

我知道 over 10 years old similar question and I see one of its answers seems to be more useful and more about actual anonymous functions than the official documentation。但是,我对 没有 return 任何值 的函数感兴趣。我目前能想到的最接近上述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

然而,该函数仍然是 return 的东西,虽然它只是一个从未使用过的(任意)布尔值,但我想知道是否可以避免这种情况,使 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);