Guf*_*ffa 34
与大多数关于结构的问题相反,这实际上似乎是对结构的良好使用.如果它包含的数据是值类型,并且您将使用大量这些数据,那么结构将很有效.
一些技巧:
::结构不应大于16个字节,否则会失去性能优势.
::使结构不可变.这使得使用更清楚.
例:
public struct Point3D {
public float X { get; private set; }
public float Y { get; private set; }
public float Z { get; private set; }
public Point3D(float x, float y, float z) {
X = x;
Y = y;
Z = z;
}
public Point3D Invert() {
return new Point3D(-X, -Y, -Z);
}
}
Run Code Online (Sandbox Code Playgroud)
答案取决于最终存储对象/值的位置.如果它们要存储在像ArrayList这样的无类型集合中,那么你最终将它们装箱.Boxing为结构创建一个对象包装器,并且脚印与类对象相同.另一方面,如果您使用类似T []或List的类型数组,那么使用结构只会存储每个元素的实际数据,仅包含整个集合的覆盖区而不是其元素.
因此,在T []数组中使用结构更有效.