Dav*_*nez 1 c# c++ functor code-translation
我正在将应用程序从C ++转换为.NET / C#。但是,我在如何用C#表达C ++函子上苦苦挣扎。
将以下表达式转换为C#的最佳方法是什么?
struct AircraftMover
{
AircraftMover(float vx, float vy)
: velocity(vx, vy)
{
}
void operator() (Aircraft& aircraft, sf::Time) const
{
aircraft.accelerate(velocity);
}
sf::Vector2f velocity;
};
Run Code Online (Sandbox Code Playgroud)
用C ++代码中的lambda替换仿函数,然后在C#代码中使用等效的lambda。
编辑:您的C ++代码已从注释修改为使用lambda:
void Player::initializeActions() {
const float playerSpeed = 200.f;
mActionBinding[MoveLeft].action =
derivedAction<Aircraft>([=](Aircraft& a, Time) { a.accelerate(Vector2f(-playerSpeed, 0.f)); });
...
}
Run Code Online (Sandbox Code Playgroud)
等效的C#代码如下所示:
mActionBinding[MoveLeft].action =
new derivedAction<Aircraft>((Aircraft a, Time t) => a.accelerate(new Vector2f(-playerSpeed, 0.f)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1933 次 |
| 最近记录: |