C# 矢量3非浮点?

C# 矢量3非浮点?,c#,vector,struct,C#,Vector,Struct,出于性能原因,是否可以将C#的内置Vector3结构更改为不使用浮点单精度,而是使用整数或字节?您需要基于整数或字节操作创建自己的Vector3结构。这是完全可能的,因为没有一个“内置”Vector3(框架中有多个3D向量的实现) 但是,如果计划在框架API调用中使用框架版本,则需要将其转换为框架版本。您需要基于整数或字节操作创建自己的Vector3结构。这是完全可能的,因为没有一个“内置”Vector3(框架中有多个3D向量的实现) 但是,如果计划在框架API调用中使用框架版本,则需要将其转换

出于性能原因,是否可以将C#的内置Vector3结构更改为不使用浮点单精度,而是使用整数或字节?

您需要基于整数或字节操作创建自己的
Vector3
结构。这是完全可能的,因为没有一个“内置”
Vector3
(框架中有多个3D向量的实现)


但是,如果计划在框架API调用中使用框架版本,则需要将其转换为框架版本。

您需要基于整数或字节操作创建自己的
Vector3
结构。这是完全可能的,因为没有一个“内置”
Vector3
(框架中有多个3D向量的实现)


但是,如果计划在框架API调用中使用框架版本,则需要将其转换为框架版本。

您可以制作自己的Vector3,或使用


但是,如果您调用的内容需要一个
矢量3
,则它们不会需要您的类型。在这种情况下,您必须使用标准的
Vector3

您可以制作自己的Vector3,或使用标准的


但是,如果您调用的内容需要一个
矢量3
,则它们不会需要您的类型。在这种情况下,您必须使用标准的
Vector3

正如前面所指出的,您不能更改任何现有类型(包括Vector3d)来为其成员使用不同的类型(除非它是泛型的,并且设计成这样)。您需要创建自己的(确保在创建时了解
class
struct
之间的差异)

如果绩效令人担忧,您需要尝试并仔细衡量您的具体情况——目前还不清楚这种变化是否会带来显著的节约

将float更改为int不会节省空间,并且可能会使计算复杂化(即,1.5*1.5在float中很容易,而如果使用缩放int,则需要额外的操作15*15/100,用于旋转的sin/cos也可能无法很好地工作)


将float更改为byte将节省空间,但数学将更加复杂,并且总是强制所有操作都转换为int或int。

正如已经指出的那样,您不能更改任何现有类型(包括Vector3d)来为其成员使用不同的类型(除非它是泛型的并且设计为这样做)。您需要创建自己的(确保在创建时了解
class
struct
之间的差异)

如果绩效令人担忧,您需要尝试并仔细衡量您的具体情况——目前还不清楚这种变化是否会带来显著的节约

将float更改为int不会节省空间,并且可能会使计算复杂化(即,1.5*1.5在float中很容易,而如果使用缩放int,则需要额外的操作15*15/100,用于旋转的sin/cos也可能无法很好地工作)


将float更改为byte将节省空间,但数学将更加复杂,并且总是强制所有操作都转换为int或int。

是否可以更改为in-swap-out?否。是否可以更改为“换出”?否。请注意,框架元组类型都是类,而不是结构。根据目标的不同,这在这里可能不合适……请注意,框架元组类型都是类,而不是结构。取决于目标,这在这里可能不合适。。。