可以说我有一个这样的结构:
public struct MyCustomDataset : IEnumerable<float> {
public float v1;
public float v2;
public float v3;
public MyCustomDataset(float v1, float v2, float v3) {
this.v1 = v1;
this.v2 = v2;
this.v3 = v3;
}
// Enumerable impl
public IEnumerator<float> GetEnumerator() {
yield return v1;
yield return v2;
yield return v3;
}
IEnumerator IEnumerable.GetEnumerator() {
return GetEnumerator();
}
}
和这样的方法:
public static MyCustomDataset test() {
return new MyCustomDataset(1,2,3);
}
public static void test2() {
MyCustomDataset ds = test();
/* doing stuff with ds */
}
我想知道如果 MyCustomDataset 是类而不是结构,它是否更优化。我需要知道这一点,因为我在应用程序主循环中调用 test(),所以 MyCustomDataset 将在每次应用程序迭代中分配。因此,我不会将 MyCustomDataset 设为一个类,因为这就像性能自杀。我正在考虑使用 struct,因为我怀疑在这种情况下它的行为或多或少类似于原始类型。
性能好吗?
我不会将 MyCustomDataset 分配给任何类字段,我只会在方法体中读取它,并且可能会将它传递给几个方法调用,因此它会出现在少数本地范围内。