C#12中的Primary Constructors(主构造函数)
|
什么是主构造函数
把参数添加到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();
- }
- }
复制代码 总的来说,主构造函数简化了我们的代码编写,一旦使用了主构造函数,主构造函数参数是必须调用的构造函数的参数。
来源:https://www.cnblogs.com/chenyishi/archive/2023/11/17/17836700.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|
|
|
发表于 2023-11-17 12:43:44
举报
回复
分享
|
|
|
|