我希望所有运算符都被覆盖一次,因为它们完全相同.在C++中我可以定义类Vector {float x,y,z; },并且做typedef Point = Vector,typedef Direction = Vector; 在C#中没有等价物("使用Point = Vector;"很糟糕,因为你必须将它放在你使用的每一个文档中,并且它不是由编译器强制执行的).
我试图定义3个不同的类并覆盖每个类的运算符,然后执行隐式类型转换,这会使代码运行得更慢等等.
我尝试定义只是Vector,然后点:向量和方向:向量,这种方式我只编写一次运算符但我不能做隐式类型转换Point < - > Vector或Direction < - > Vector.
我可以简单地定义Vector类并在任何地方使用它,但这会产生模糊性,因为天气变量应该是空间中的位置(Point),空间中的相对位置(Vector)或单位矢量(Direction).例如功能:
Vector GetOrthogon(Vector a, Vector b) {
// ....
}
Run Code Online (Sandbox Code Playgroud)
你无法知道它是否期望任何向量或单位向量.在C++中你可以这样做,为什么不在C#?
注意:如果可能的话,使用结构而不是类是理想的.