1

.net 的 XNA 框架有一个非常有用的对象,称为 vector2,它表示 2d 向量。您可以将它们乘以整数、浮点数和其他向量 2

例如。

        Vector2 bloo = new Vector2(5, 5);
        bloo *= 5;
        bloo *= someotherVector2;

唯一的问题是 X,Y 信息存储为浮点数,在很多情况下,我只想将 2d 信息或 2d 坐标存储为整数。我想为此制作自己的结构..这就是我所拥有的..

internal struct Coord
{
    public int X { get; private set; }
    public int Y { get; private set; }

    public Coord(int x,int y)
    {
        X = x;
        Y = y;
    }
} 

我的问题是如何做到这一点,以便我的 Coord 结构可以使用 * 与整数或其他 Coord 相乘(不是“乘法”函数调用)

4

3 回答 3

5

您可以使用运算符重载:

public static Coord operator*(Coord left, int right) 
{
    return new Coord(left.X * right, left.Y * right);
}

只需将方法放入Coord结构中即可。您可以使用许多运算符(例如+,-,/etc...)以及不同的参数来执行此操作。

于 2013-02-18T12:17:04.403 回答
1

您需要为您的类型重载乘法运算符。

// overload operator * 
public static Coord operator *(Coord x, Coord y)
{
    // Return a `Coord` that results from multiplying x with y
}
于 2013-02-18T12:17:56.760 回答
1

重载乘法运算符:

public static Coord operator* (Coord multiplyThis, Coord withThis) {
    Coord result = multiply(multiplyThis, withThis); //...multiply the 2 Coords
    return result;
}

public static Coord operator* (Coord multiplyThis, float withThis) {
    Coord result = multiply(multiplyThis, withThis); //...multiply the Coord with the float
    return result;
}
于 2013-02-18T12:25:45.070 回答