什麼是主建構函式
把引數新增到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(); } }
總的來說,主建構函式簡化了我們的程式碼編寫,一旦使用了主建構函式,主建構函式引數是必須呼叫的建構函式的引數。