C#入门:类构造器中this.字段=参数写法的作用是什么?
代码示例
public class Thissser { public string whatever; public Thissser(string whatever) { this.whatever = whatever; } }
这行代码的作用
this.whatever = whatever;的作用是把构造函数接收的入参值,赋值给当前类的实例字段whatever,完成类实例初始化时的字段赋值。
为什么需要这么写
- 上述代码里定义了两个同名的
whatever:一个是属于类实例的成员字段,另一个是构造函数的入参 - C#默认遵循「就近作用域优先」原则:如果在方法(包含构造函数)内部直接访问
whatever,编译器会优先判定你用的是离当前代码更近的构造函数入参,而不是类的成员字段 this关键字在这里指代「当前正在初始化的类实例对象」,加上this.前缀后,就明确告诉编译器:等号左边的whatever是类的实例字段,不是构造函数的入参- 如果省略
this直接写whatever = whatever;,就变成了把入参的值赋值给入参本身,完全没有实际意义,类的实例字段不会被赋值,后续访问该字段时会得到默认的null值,不符合初始化的预期
补充说明:如果你的构造函数入参命名和类字段不重复,比如入参叫
inputWhatever,那么不需要加this,直接写whatever = inputWhatever;编译器也能正确识别,不存在冲突的情况下this可以省略。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

