0

可以说我有一个这样的结构:

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 分配给任何类字段,我只会在方法体中读取它,并且可能会将它传递给几个方法调用,因此它会出现在少数本地范围内。

4

1 回答 1

2

你:

因为这就像表演自杀

你为什么这么认为?您指的结构和类之间有什么区别?

如果您觉得它或多或少像“原始类型”(您的话),我认为您应该使用结构。这只是三个float值(可能总共 96 位),因此对于值类型来说足够小。但是,如果您坚持使用结构,请创建 fields readonly

于 2013-01-17T16:28:47.070 回答