首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++捕获-等价于C#中匿名lambda函数的子句

C++捕获-等价于C#中匿名lambda函数的子句
EN

Stack Overflow用户
提问于 2015-07-10 00:49:34
回答 1查看 239关注 0票数 1

目前,我正在尝试将我用C++编写的项目移植到C#框架中。我遇到了将函数传递到另一个类的问题。

我有一个类,PickupDef,它将委托函数作为其构造函数中的参数。在C++版本中,我将传递如下函数:

代码语言:javascript
复制
[&]() { hero->changeHP(10); }

其中英雄是调用类中动态分配的对象。我尝试在C#版本中使用这个:

代码语言:javascript
复制
delegate { hero.changeHP(10); }

但是C#不认识英雄对象。似乎我无法对其进行范围调整以接受来自调用类的引用。

有什么方法可以获得C++ [&]()在C#中的功能吗?我可以将英雄对象的引用传递给PickupDef,但这需要对当前系统进行彻底改革。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-10 00:53:42

C#中的lambda如下所示:

代码语言:javascript
复制
() => hero.changeHP(10);

由于这是一个无参数的lambda,所以可以将它作为Action实例传递。

代码语言:javascript
复制
Action setHpTo10 = () => hero.changeHP(10);

Lambda从本质上捕获了您在C#中引用的变量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31330712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档