或者简而言之,是否需要第二个运算符(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/