C# 如何在XNA中向Vector2类添加扩展方法?

C# 如何在XNA中向Vector2类添加扩展方法?,c#,xna,operator-overloading,extension-methods,C#,Xna,Operator Overloading,Extension Methods,我正在努力为XNA中的Vector2类添加一个很好的扩展方法。 我想要一个基于输入向量2和浮点的减法 这是我已经做过的: public static class Vector2Extensions { public static Vector2 Subtract(Vector2 v1, float a) { return new Vector2(v1.X - a, v1.Y - a); } } 然而当我想这样称呼它的时候: Vector2 x = Vec

我正在努力为XNA中的Vector2类添加一个很好的扩展方法。 我想要一个基于输入向量2和浮点的减法

这是我已经做过的:

public static class Vector2Extensions
{
    public static Vector2 Subtract(Vector2 v1, float a)
    {
        return new Vector2(v1.X - a, v1.Y - a);
    }
}
然而当我想这样称呼它的时候:

Vector2 x = Vector2.Subtract(new Vector2(2,0), 1.0f);
它似乎无法识别我对该方法的扩展(第三个重载,因为XNA默认有两个重载)

另一个问题,为什么我不能让-operator过载?(我就是这样来到这里的)


非常感谢您的帮助。

您的定义中缺少
这个
关键字

public static Vector2 Subtract(this Vector2 v1, float a)
{
    return new Vector2(v1.X - a, v1.Y - a);
}

您的定义中缺少
关键字

public static Vector2 Subtract(this Vector2 v1, float a)
{
    return new Vector2(v1.X - a, v1.Y - a);
}

您的定义中缺少
关键字

public static Vector2 Subtract(this Vector2 v1, float a)
{
    return new Vector2(v1.X - a, v1.Y - a);
}

您的定义中缺少
关键字

public static Vector2 Subtract(this Vector2 v1, float a)
{
    return new Vector2(v1.X - a, v1.Y - a);
}

使方法成为扩展方法缺少一件事:第一个参数中的
this
关键字,如下所示:

public static Vector2 Subtract(this Vector2 v1, float a)
然后可以在实例上使用该方法:

Vector2 x = new Vector2(2,0).Subtract(1.0f);
或者将其作为静态方法调用,但从静态类调用,而不是从“扩展”类本身调用:

Vector2 x2 = Vector2Extensions.Subtract(new Vector2(2,0), 1.0f);

不幸的是,运算符只能在C#中的类内部重载,而不能在外部重载。

使方法成为扩展方法缺少一件事:第一个参数中的
this
关键字,如下所示:

public static Vector2 Subtract(this Vector2 v1, float a)
然后可以在实例上使用该方法:

Vector2 x = new Vector2(2,0).Subtract(1.0f);
或者将其作为静态方法调用,但从静态类调用,而不是从“扩展”类本身调用:

Vector2 x2 = Vector2Extensions.Subtract(new Vector2(2,0), 1.0f);

不幸的是,运算符只能在C#中的类内部重载,而不能在外部重载。

使方法成为扩展方法缺少一件事:第一个参数中的
this
关键字,如下所示:

public static Vector2 Subtract(this Vector2 v1, float a)
然后可以在实例上使用该方法:

Vector2 x = new Vector2(2,0).Subtract(1.0f);
或者将其作为静态方法调用,但从静态类调用,而不是从“扩展”类本身调用:

Vector2 x2 = Vector2Extensions.Subtract(new Vector2(2,0), 1.0f);

不幸的是,运算符只能在C#中的类内部重载,而不能在外部重载。

使方法成为扩展方法缺少一件事:第一个参数中的
this
关键字,如下所示:

public static Vector2 Subtract(this Vector2 v1, float a)
然后可以在实例上使用该方法:

Vector2 x = new Vector2(2,0).Subtract(1.0f);
或者将其作为静态方法调用,但从静态类调用,而不是从“扩展”类本身调用:

Vector2 x2 = Vector2Extensions.Subtract(new Vector2(2,0), 1.0f);
不幸的是,运算符只能在C#中的类内部重载,不能在外部重载