C#12中的Primary?Constructors主構(gòu)造函數(shù)詳解
什么是主構(gòu)造函數(shù)
把參數(shù)添加到class與record的類聲明中就是主構(gòu)造函數(shù)。例如
class Person(string name) { private string _name = name; }
這種寫法與以下代碼寫法一樣
class Person { private string _name; public Person(string name) { _name = name; } }
需要注意的是,類的所有其他構(gòu)造函數(shù)都必須通過 this() 構(gòu)造函數(shù)調(diào)用直接或間接調(diào)用主構(gòu)造函數(shù)。
class Person(string name) { public Person(int age,string name):this(name) { } }
主構(gòu)造函數(shù)參數(shù)的最常見用途包括但不限于以下幾個方面:
- 初始化基類。
- 初始化成員字段或?qū)傩浴?/li>
- 簡化依賴注入
下面分別介紹。
初始化基類
可以從派生類的主構(gòu)造函數(shù)調(diào)用基類的主構(gòu)造函數(shù)。 這是編寫必須調(diào)用基類中主構(gòu)造函數(shù)的派生類的最簡單方法。
class Person(string name) { private string _name = name; } class Man(string name):Person(name) { }
派生類如沒主構(gòu)造函數(shù),可以在派生類中創(chuàng)建一個構(gòu)造函數(shù),用于調(diào)用基類的主構(gòu)造函數(shù)
class Person(string name) { private string _name = name; } class Woman : Person { public Woman(string name) : base(name) { } }
初始化成員字段或?qū)傩?/h2>
以下代碼,通過主構(gòu)造函數(shù)初始化了一個字段:
class Person(string name) { private string _name = name; }
簡化依賴注入
主構(gòu)造函數(shù)的另一個常見用途是指定依賴項(xiàng)注入的參數(shù)。 下面的代碼創(chuàng)建了一個簡單的控制器,使用時(shí)需要有一個服務(wù)接口:
public interface IService { Distance GetDistance(); } public class ExampleController(IService service) : ControllerBase { [HttpGet] public ActionResult<Distance> Get() { return service.GetDistance(); } }
總的來說,主構(gòu)造函數(shù)簡化了我們的代碼編寫,一旦使用了主構(gòu)造函數(shù),主構(gòu)造函數(shù)參數(shù)是必須調(diào)用的構(gòu)造函數(shù)的參數(shù)。
到此這篇關(guān)于C#12中的Primary Constructors(主構(gòu)造函數(shù))的文章就介紹到這了,更多相關(guān)C#12中的Primary Constructors(主構(gòu)造函數(shù))內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)Dictionary字典賦值的方法
本文主要介紹了C#實(shí)現(xiàn)Dictionary字典賦值的方法,如同java中的Hasttable,C#里面有Dictionary,可以實(shí)現(xiàn)很高效的鍵值對操作。感興趣的可以了解一下2021-05-05c#實(shí)現(xiàn)將pdf轉(zhuǎn)文本的示例分享
這篇文章主要介紹了c#實(shí)現(xiàn)將pdf轉(zhuǎn)文本的示例,需要的朋友可以參考下2014-03-03