gpt4 book ai didi

c# - 如何创建类的常量静态不可变实例?

转载 作者:行者123 更新时间:2023-12-05 01:24:23 25 4
gpt4 key购买 nike

我有一个表示 3 维坐标的简单类,称为 Coord3,它只有 x、y 和 z int 值。

我想声明一个静态常量变量 Coord3.zero,其中 x、y 和 z 设置为 0。

我尝试过:

public static readonly Coord3 zero = new Coord3(0, 0, 0);

不过我发现这个变量是可以改变的。例如,如果我这样做

Coord3 coord = Coord3.zero;
coord.x = 5;

这实际上将 Coord3.zero 的 x 值更改为 5。也许我误解了 readonly?我知道在 Unity 中有一个永远不会改变的 Vector3.zero。我正在尝试实现相同的效果。

最佳答案

Maybe I am misunderstanding readonly?

是的,readonly 意味着您不能更改变量的引用。换句话说,你不能写 Coord3.zero = new(...);

现在,方式these things are usually written就像 struct 一样,其中的字段默认是不可变的。那将在那里解决您的问题。在 Unity 中也是如此。请注意,您也可以对类执行此操作,只需对属性使用 getter 并从构造函数中一次性填充它们,但对于这些小型类型而言,类的重量非常大。

关于c# - 如何创建类的常量静态不可变实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71387522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com