相关疑难解决方法(0)

在C#中实现这3个类的最佳方法:向量,方向(单位向量),Point

  • 所有点都是向量,所有向量都是点.
  • 所有方向都是向量,并非所有向量都是方向(这不应该意味着不允许双向转换).

我希望所有运算符都被覆盖一次,因为它们完全相同.在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#?

注意:如果可能的话,使用结构而不是类是理想的.

c# struct class

6
推荐指数
3
解决办法
5296
查看次数

标签 统计

c# ×1

class ×1

struct ×1