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

C#构造函数与类成员疑问:代码重构差异及Blazor环境困惑

问题解析

两段代码的本质差异

  • 第一段代码:是在某个非Car的类中定义了一个公共字段:

    public SchedulerCust Scheduler;
    

    这个Scheduler属于定义它的类,是类的成员,外部可通过类的实例直接访问。

  • 第二段代码:这确实是Car类的构造函数(构造函数名与类名一致、无返回值),但这段代码存在语法错误——Scheduler不是Car类的成员,构造函数里无法给不属于当前类的变量赋值,编译时会直接报错。

构造函数的核心作用

构造函数的主要功能是初始化类的实例:创建类对象时会自动执行构造函数,用于给类的成员赋值、初始化资源等。在Blazor场景中,构造函数常被用于依赖注入——把Blazor服务容器中的实例(比如你的SchedulerCust)注入到类中,但前提是这个实例必须作为当前类的成员存在。

Blazor场景下的正确写法

如果想在Car类中注入SchedulerCust,正确的步骤是先在Car类中声明成员,再通过构造函数完成赋值:

public class Car
{
    // 声明类的成员(字段或属性均可)
    public SchedulerCust Scheduler { get; }

    // 通过构造函数注入并初始化成员
    public Car(SchedulerCust scheduler)
    {
        Scheduler = scheduler;
    }
}

关于VS重构的问题说明

你遇到的错误重构结果,应该是操作时选错了重构选项导致的。VS不会自动生成这种语法错误的代码,大概率是你原本在其他类中定义了Scheduler字段,误将重构目标指向了Car类,才生成了这段有问题的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:27:14