我应该在C#中创建这些向量类或结构

dew*_*ald 8 c# size performance struct class

我在C#中创建一个几何库,我将需要以下不可变类型:

  • Vector2f(2 floats - 8字节)
  • Vector2d(2 doubles - 16字节)
  • Vector3f(3 floats - 12字节)
  • Vector3d(3 doubles - 24字节)
  • Vector4f(4 floats - 16字节)
  • Vector4d(4 doubles - 32字节)

我试图确定是否使它们成为结构或类. 如果大小不超过16个字节,MSDN建议仅使用结构.该引用似乎是从2005年开始的.16个字节仍然是最大建议大小?

我确信使用float向量的结构比使用类更有效,但我应该怎么做double向量?我是否应该使它们的结构一致,或者我应该让它们上课?

更新: 看起来每个人都同意他们应该结构化.谢谢你的答案.

dtb*_*dtb 8

微软的XNA框架使用结构为它Vector2/3/4的数据类型.这些包含类型的字段float.我也没有看到做同样的事; 使用类型的字段double不应该有很大的不同.

  • WPF还为其Vector/Rect/Points使用结构,它包含双字段而不是浮点数(在Point4D的情况下,这包括最多4个字段) (2认同)