如何解决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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。