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(); } }
总的来说,主构造函数简化了我们的代码编写,一旦使用了主构造函数,主构造函数参数是必须调用的构造函数的参数。
到此这篇关于C#12中的Primary Constructors(主构造函数)的文章就介绍到这了,更多相关C#12中的Primary Constructors(主构造函数)内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Unity UGUI的TouchInputModule触摸输入模块组件介绍使用示例
这篇文章主要为大家介绍了Unity UGUI的TouchInputModule触摸输入模块组件介绍使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-08-08C#/C++ 通过ODBC连接OceanBase Oracle租户的详细过程
近期我们项目正处于将Oracle数据库迁移到OceanBase Oracle租户模式的阶段,考虑到我们项目采用了C++和C#混合开发,并且使用了多种技术,因此存在多种数据库连接方式,C#连接OceanBase的案例相对较少,因此我特意记录下这一过程,感兴趣的朋友一起看看吧2024-05-05
最新评论