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);
在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);