经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C#12中的Primary Constructors(主构造函数)
来源:cnblogs  作者:chester·chen  时间:2023/11/17 9:18:54  对本文有异议

什么是主构造函数

把参数添加到class与record的类声明中就是主构造函数。例如

  1. class Person(string name)
  2. {
  3. private string _name = name;
  4. }

这种写法与以下代码写法一样

  1. class Person
  2. {
  3. private string _name;
  4. public Person(string name)
  5. {
  6. _name = name;
  7. }
  8. }

需要注意的是,类的所有其他构造函数都必须通过 this() 构造函数调用直接或间接调用主构造函数。

  1. class Person(string name)
  2. {
  3. public Person(int age,string name):this(name)
  4. {
  5. }
  6. }

主构造函数参数的最常见用途包括但不限于以下几个方面:

  • 初始化基类。
  • 初始化成员字段或属性。
  • 简化依赖注入

下面分别介绍。

 

初始化基类

可以从派生类的主构造函数调用基类的主构造函数。 这是编写必须调用基类中主构造函数的派生类的最简单方法。
  1. class Person(string name)
  2. {
  3. private string _name = name;
  4. }
  5. class Man(string name):Person(name)
  6. {
  7. }
派生类如没主构造函数,可以在派生类中创建一个构造函数,用于调用基类的主构造函数
  1. class Person(string name)
  2. {
  3. private string _name = name;
  4. }
  5. class Woman : Person
  6. {
  7. public Woman(string name) : base(name)
  8. {
  9. }
  10. }

 

初始化成员字段或属性

以下代码,通过主构造函数初始化了一个字段:
  1. class Person(string name)
  2. {
  3. private string _name = name;
  4. }

 

简化依赖注入

主构造函数的另一个常见用途是指定依赖项注入的参数。 下面的代码创建了一个简单的控制器,使用时需要有一个服务接口:
  1. public interface IService
  2. {
  3. Distance GetDistance();
  4. }
  5. public class ExampleController(IService service) : ControllerBase
  6. {
  7. [HttpGet]
  8. public ActionResult<Distance> Get()
  9. {
  10. return service.GetDistance();
  11. }
  12. }

总的来说,主构造函数简化了我们的代码编写,一旦使用了主构造函数,主构造函数参数是必须调用的构造函数的参数。

原文链接:https://www.cnblogs.com/chenyishi/p/17836700.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号