如何为不可变类型创建const成员?

时间:2009-05-26 20:38:53

标签: c# .net struct immutability

如果你有这样的不可变类型:

struct Point3
{

}

和内部成员一样:

public static const Point3 Origin = new Point3 (0,0,0);

你应该使用:

new Point3 (0,0,0)

在我看来,由于这种类型无法改变,为什么有许多起源本质上是相同的?就像我们永远不会改变0,对吧?

如何为不可变类型实现相同的功能?

2 个答案:

答案 0 :(得分:7)

public static readonly Point3 Origin = new Point3(0,0,0);

答案 1 :(得分:1)

正如安德鲁所说,你不能使用const因为它不是编译时常量。

请注意,如果 要重复使用构造函数,那么从性能的角度来看,最好是调用

new Point3()

大于

new Point3(0, 0, 0)

编译器知道第一个版本只是将内存空白,不需要调用任何代码。

但是,我会继续提供一个Origin成员并在可能的地方使用它,而不是:)