我目前正在尝试将我用 C++ 编写的项目移植到 C# 框架。我遇到了将函数传递给另一个类的问题。
我有一个类 PickupDef,它在其构造函数中采用委托(delegate)函数作为参数。在 C++ 版本中,我会像这样传递函数:
[&]() { hero->changeHP(10); }
其中 hero 是调用类中动态分配的对象。我试过在 C# 版本中使用它:
delegate { hero.changeHP(10); }
但 C# 无法识别 hero 对象。似乎我无法确定它的范围以从调用类中获取引用。
有没有办法在 C# 中获得 C++ [&]()
的功能?我可以将对英雄对象的引用传递给 PickupDef,但这需要对当前系统进行全面检查。
最佳答案
C# 中的 lambda 是这样写的:
() => hero.changeHP(10);
由于这是一个无参数的 lambda,您可以将其作为 Action
传递例如
Action setHpTo10 = () => hero.changeHP(10);
Lambda 固有地捕获您在 C# 中引用的变量。
关于c# - C# 中匿名 lambda 函数的 C++ 捕获子句等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31330712/