如何在XNA中向Vector2类添加扩展方法
本文关键字:添加 扩展 方法 Vector2 中向 XNA | 更新日期: 2023-09-27 18:01:12
我正在为XNA中的Vector2类添加一个不错的扩展方法。我想要一个基于输入vector2和float的减法。
这就是我已经做的:
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默认有2次重载(
另一个问题是,为什么我不能重载-运算符?(我就是这样来到这里的(
非常感谢您的帮助。。
要使方法成为扩展方法,需要缺少一件事:第一个参数中的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)
{
return new Vector2(v1.X - a, v1.Y - a);
}