或者简而言之,是否需要第二个运算符(operator)?

    public static bool operator ==(Vector3 v, float scalar)
    {
        return v.X == scalar && v.Y == scalar && v.Z == scalar;
    }

    public static bool operator ==(float scalar, Vector3 v)
    {
        return v == scalar;
    }

最佳答案

是的,如果您想允许非对称相等测试,则需要它:

bool foo = (yourVector3 == 5);    // requires the first version
bool bar = (5 == yourVector3);    // requires the second version

如果没有第一个版本,你会得到一个编译时错误,说“运算符'=='不能应用于'Vector3'和'int'类型的操作数”。如果没有第二个版本,错误会说“运算符'=='不能应用于'int'和'Vector3'类型的操作数”。

关于c# - 平等的顺序有区别吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4590310/

10-13 01:32