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
相关产品推荐
相关产品推荐

