前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#12中的Primary Constructors(主构造函数)

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

作者头像
Chester Chen
发布2023-11-20 10:52:52
1920
发布2023-11-20 10:52:52
举报
文章被收录于专栏:chester技术分享chester技术分享

什么是主构造函数

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

代码语言:javascript
复制
class Person(string name)
{
    private string _name = name;
}

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

代码语言:javascript
复制
class Person
{
    private string _name;
    public Person(string name)
    {
        _name = name;
    }
}

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

代码语言:javascript
复制
class Person(string name)
{
    public Person(int age,string name):this(name)
    {
                
    }
}

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

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

下面分别介绍。

初始化基类

可以从派生类的主构造函数调用基类的主构造函数。这是编写必须调用基类中主构造函数的派生类的最简单方法。

代码语言:javascript
复制
class Person(string name)
{
    private string _name = name;
}

class Man(string name):Person(name)
{

}

派生类如没主构造函数,可以在派生类中创建一个构造函数,用于调用基类的主构造函数

代码语言:javascript
复制
class Person(string name)
{
    private string _name = name;
}

class Woman : Person
{
    public Woman(string name) : base(name)
    {

    }
}

始化成员字段或属性

以下代码,通过主构造函数初始化了一个字段:

代码语言:javascript
复制
class Person(string name)
{
    private string _name = name;
}

简化依赖注入

主构造函数的另一个常见用途是指定依赖项注入的参数。下面的代码创建了一个简单的控制器,使用时需要有一个服务接口:

代码语言:javascript
复制
public interface IService
{
    Distance GetDistance();
}

public class ExampleController(IService service) : ControllerBase
{
    [HttpGet]
    public ActionResult<Distance> Get()
    {
        return service.GetDistance();
    }
}

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 chester技术分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档