我有以下代码。
public class BoxCorners
{
public Vector3 V000;
public Vector3 V001;
public Vector3 V010;
public Vector3 V011;
public Vector3 V100;
public Vector3 V101;
public Vector3 V110;
public Vector3 V111;
public Vector3 Index(int i)
{
if (i > 7)
{
throw new IndexOutOfRangeException($"{i}");
}
unsafe
{
fixed (Vector3 * v = &V000)
{
return v[i];
}
}
}
}
其中Vector3
是一个结构,还有三个双打。
public struct Vector3 {
double X;double Y; double Z;
}
以上是按数字索引字段的有效方法吗?或者我是否必须指定一些包装属性以确保其有效。
用例是有时我需要按名称索引,有时需要按编号索引。如果能解决一些性能问题,我很乐意使用不安全的代码处理金属。此代码用于运行数百万次的非常紧密的循环中。物理引擎类型的东西如此之快比漂亮更好。