C# 中匿名 lambda 函数的 C++ 捕获子句等效项
C++ capture-clause equivalent for anonymous lambda functions in C#
我目前正在尝试将我用 C++ 编写的项目移植到 C# 框架。我 运行 遇到了将函数传递给另一个 class 的问题。
我有一个 class,PickupDef 将委托函数作为其构造函数中的参数。在 C++ 版本中,我会像这样传递函数:
[&]() { hero->changeHP(10); }
其中 hero 是调用中动态分配的对象 class。我试过在 C# 版本中使用它:
delegate { hero.changeHP(10); }
但 C# 无法识别 hero 对象。似乎我无法将其范围限定为从调用 class.
中获取引用
有没有办法在 C# 中获得 C++ [&]()
的功能?我可以将对英雄对象的引用传递给 PickupDef,但这需要对当前系统进行大修。
C#中的lambda是这样写的:
() => hero.changeHP(10);
由于这是一个无参数的 lambda,您可以将其作为 Action
实例传递,例如
Action setHpTo10 = () => hero.changeHP(10);
Lambda 固有地捕获您在 C# 中引用的变量。
我目前正在尝试将我用 C++ 编写的项目移植到 C# 框架。我 运行 遇到了将函数传递给另一个 class 的问题。
我有一个 class,PickupDef 将委托函数作为其构造函数中的参数。在 C++ 版本中,我会像这样传递函数:
[&]() { hero->changeHP(10); }
其中 hero 是调用中动态分配的对象 class。我试过在 C# 版本中使用它:
delegate { hero.changeHP(10); }
但 C# 无法识别 hero 对象。似乎我无法将其范围限定为从调用 class.
中获取引用有没有办法在 C# 中获得 C++ [&]()
的功能?我可以将对英雄对象的引用传递给 PickupDef,但这需要对当前系统进行大修。
C#中的lambda是这样写的:
() => hero.changeHP(10);
由于这是一个无参数的 lambda,您可以将其作为 Action
实例传递,例如
Action setHpTo10 = () => hero.changeHP(10);
Lambda 固有地捕获您在 C# 中引用的变量。