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

Joa*_*nge 0 .net c# struct immutability

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

struct Point3
{

}
Run Code Online (Sandbox Code Playgroud)

和一个像来源一样的成员:

public static const Point3 Origin = new Point3 (0,0,0);
Run Code Online (Sandbox Code Playgroud)

你应该使用:

new Point3 (0,0,0)
Run Code Online (Sandbox Code Playgroud)

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

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

Meh*_*ari 7

public static readonly Point3 Origin = new Point3(0,0,0);
Run Code Online (Sandbox Code Playgroud)

  • 它不会创建新实例.结构总是被复制,顺便说一句.这是它的本质.但是不会调用构造函数,因此它并不是真正的新实例. (3认同)
  • 它不会在每次使用时创建一个新实例 - 它是一个静态只读变量,与其他任何实例一样; 静态初始化程序只执行一次. (2认同)