在介面中定義建構函式簽章
在C# 中,介面提供了一個契約,該契約定義了實作介面的類別必須執行的一組方法和屬性堅持。然而,介面傳統上不會指定實作細節,包括建構函式簽章。
為什麼不能在介面中定義建構子?
無法定義建構子介面中的建構子源自於介面的基本性質。介面是抽象契約,沒有自己的實作。當類別實作介面時,它為介面中定義的方法和屬性提供自己的實作。另一方面,建構函數負責初始化物件的狀態,並且特定於特定類別的實作。
因此,介面沒有自己的實現,因此無法定義自己的建構子。建構函式是類別實作的一部分,被定義為類別定義的一部分,而不是它實作的介面。
範例
考慮以下介面和類別:
interface IDrawable { void Update(); void Draw(); } class MyDrawable : IDrawable { private GraphicsDeviceManager _manager; public MyDrawable(GraphicsDeviceManager manager) { _manager = manager; } public void Update() { } public void Draw() { } }
在此範例中,MyDrawable 類別實作了 IDrawable 介面。但是,IDrawable 介面沒有定義建構函式。建構子定義在MyDrawable類別中,負責初始化物件的GraphicsDeviceManager成員變數。
Alternatives
雖然介面不支援建構子的定義,但有初始化物件的其他方法state:
以上是為什麼 C# 中的介面不能定義建構函式簽章?的詳細內容。更多資訊請關注PHP中文網其他相關文章!