C#12中的Primary Constructors(主构造函数)

  • C#12中的Primary Constructors(主构造函数)已关闭评论
  • 111 次浏览
  • A+
所属分类:.NET技术
摘要

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

什么是主构造函数

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

class Person(string name) {     private string _name = name; }    

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

class Person {     private string _name;     public Person(string name)     {         _name = name;     } }

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

class Person(string name) {     public Person(int age,string name):this(name)     {                      } }

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

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

下面分别介绍。

 

初始化基类

可以从派生类的主构造函数调用基类的主构造函数。 这是编写必须调用基类中主构造函数的派生类的最简单方法。
class Person(string name) {     private string _name = name; }  class Man(string name):Person(name) {  }

派生类如没主构造函数,可以在派生类中创建一个构造函数,用于调用基类的主构造函数
class Person(string name) {     private string _name = name; }  class Woman : Person {     public Woman(string name) : base(name)     {      } }

 

初始化成员字段或属性

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

 

简化依赖注入

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

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