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

C# 11中声明struct实例时,其构造函数内代码是否会执行?

C# 11中struct无参构造函数执行逻辑解析

先看你提供的代码:

struct bb
{
    public int j = 8;
    public int f;

    public bb()
    {
        f = 88;
    }
}

//main method
bb test;

你的猜测部分正确,但存在关键误解,具体说明如下:

  1. 单纯声明局部变量bb test;不会调用任何构造函数
    这段代码只是声明了一个局部值类型变量,此时变量处于未赋值状态,编译器会阻止你直接访问它的字段,必须先完成初始化操作才能使用。

  2. 不同初始化方式的构造函数执行逻辑

    • 显式调用构造函数(bb test = new bb();):此时会完整执行你定义的无参构造函数,既会执行字段初始化语句j=8,也会运行构造函数内的f=88;,最终test的j值为8,f值为88。
    • 默认初始化(bb test = default;或类字段自动初始化):此时不会触发你写的显式无参构造函数,只会将所有字段设为对应类型的默认值(int类型默认值为0),所以test的j值为0,f值为0,构造函数内的f=88;和字段初始化j=8都不会执行。

总结:你猜测的“构造函数内诸如f=88;的其他代码不会运行”仅在默认初始化场景下成立;但“声明test时会调用无参构造函数”是错误的,单纯的局部变量声明不会触发构造函数调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:48:16