You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于C#结构体内部定义静态只读实例是否会引发无限循环的疑问

结构体中定义静态只读实例是否会引发无限循环?

不会引发无限循环,原因如下:

  • 结构体属于值类型,其静态字段的初始化逻辑和引用类型有本质区别。对于代码里的static readonly position Zero;,如果没有显式赋值,C#会自动执行默认值初始化:把该实例的所有字段设置为对应类型的默认值(这里x和y都会被初始化为0.0)。
  • 这个默认初始化是底层的内存清零操作,不会递归调用结构体的构造函数,也不会触发静态字段的重复初始化,自然不会产生无限循环。
  • 如果换成类(引用类型)这么写,可能会因为递归初始化出现问题,但值类型的静态字段初始化是在类型首次被访问时完成,且默认初始化过程完全独立于实例构造逻辑。

附上你提到的代码片段:

public struct position
{
    public static readonly position Zero;
    public double x;
    public double y;
    ...
}

内容的提问来源于stack exchange,提问作者GRS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:55:22