目前,我正在尝试将我用C++编写的项目移植到C#框架中。我遇到了将函数传递到另一个类的问题。
我有一个类,PickupDef,它将委托函数作为其构造函数中的参数。在C++版本中,我将传递如下函数:
[&]() { hero->changeHP(10); }其中英雄是调用类中动态分配的对象。我尝试在C#版本中使用这个:
delegate { hero.changeHP(10); }但是C#不认识英雄对象。似乎我无法对其进行范围调整以接受来自调用类的引用。
有什么方法可以获得C++ [&]()在C#中的功能吗?我可以将英雄对象的引用传递给PickupDef,但这需要对当前系统进行彻底改革。
发布于 2015-07-10 00:53:42
C#中的lambda如下所示:
() => hero.changeHP(10);由于这是一个无参数的lambda,所以可以将它作为Action实例传递。
Action setHpTo10 = () => hero.changeHP(10);Lambda从本质上捕获了您在C#中引用的变量。
https://stackoverflow.com/questions/31330712
复制相似问题