c# - 如何制作可以使用 * 相乘的结构

标签 c# .net struct multiplication

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

例如。

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

唯一的问题是 X、Y 信息存储为 float ,在很多情况下我想简单地将二维信息或二维坐标存储为整数。 我想为此制作自己的结构.. 这是我所拥有的..

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 结构可以使用 * (不是“乘法”函数调用)乘以整数或其他 Coords

最佳答案

您可以使用运算符重载:

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

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

关于c# - 如何制作可以使用 * 相乘的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14936067/

相关文章:

C# - 重新初始化静态类?

.net - 混合存储过程业务逻辑和 ORM

c# - 生成的.TLB文件输出目录

c# - 在 iOS 中使用 .NET 和 Objective-C 创建聊天服务器?

ios - Swift:构建还是不构建

c# - MessageBoxResult 的自定义图像枚举

c# - 依赖注入(inject) : ASP vNext. 这是如何工作的?

c# - c#中特定XML节点的命名空间

ios - 如何将结构参数与 OCMock 匹配?

c - 在包含字符串的结构上使用 qsort