如何制作可以使用*倍数的结构

Guy*_*ito 1 .net c# struct multiplying

.net的XNA框架有一个非常有用的对象,称为ve​​ctor2,代表一个二维向量.你可以将它们乘以整数,浮点数和其他向量2

例如.

        Vector2 bloo = new Vector2(5, 5);
        bloo *= 5;
        bloo *= someotherVector2;
Run Code Online (Sandbox Code Playgroud)

唯一的事情是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;
    }
} 
Run Code Online (Sandbox Code Playgroud)

我的问题是如何使它成为我的Coord结构可以通过使用*(不是"乘法"函数调用)的整数或其他Coords倍增

Fel*_* K. 5

您可以使用运算符重载:

public static Coord operator*(Coord left, int right) 
{
    return new Coord(left.X * right, left.Y * right);
}
Run Code Online (Sandbox Code Playgroud)

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