使用C#中的扩展方法更新PointF值

时间:2016-03-06 21:03:12

标签: c# 2d extension-methods

我正在创建一个显示"旧学校的应用程序"精灵。每个精灵的位置都保存在PointF变量中。

我想根据提供的角度和速度更新每个精灵的位置。

我已经为PointF类创建了一个扩展方法,以便这个逻辑是自包含的,并且可以在整个应用程序中访问。

扩展方法如下所示:

address

目前,使用扩展PointF类的客户端代码如下所示:

public static class MyExtensions
{
    public static PointF Translate(this PointF point, double angle, double speed)
    {
        point.X += (float)(Math.Sin(angle / 57.2958) * speed);
        point.Y += (float)(Math.Cos(angle / 57.2958) * speed);
        return point;
    }
} 

这很好用,但我想更进一步,完全封装扩展方法中的位置更新。在这种情况下,客户端代码应该像这样工作:

position = position.Translate(angle, speed);

要做到这一点,我觉得我应该将现有的位置值通过ref 传递给方法调用,但我无法弄清楚这样做的语法。

这甚至可能吗?如果是这样,我会很感激一些指导...

0 个答案:

没有答案