私がそのような構造体を持っているとしましょう:
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をクラスフィールドに割り当てるつもりはありません。メソッド本体でのみ読み取り、いくつかのメソッド呼び出しに渡す可能性があるため、いくつかのローカルスコープに存在します。