インターフェイスでのコンストラクター シグネチャの定義
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 メンバー変数の初期化を担当します。
代替
インターフェイスはコンストラクターの定義をサポートしていませんが、オブジェクトを初期化する他の方法state:
以上がC# ではインターフェイスでコンストラクターの署名を定義できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。