インターフェイスでメソッドの代わりにプロパティを宣言できますか?
どちらがより好ましいですか?
インターフェイスITaggable {string GetTag(); }
または
インタフェースITaggable {タグ{取得;}。ネットの世界に住んでいる}
インタフェースではメソッドの代わりにプロパティを宣言できますか?
。
インターフェイスでメソッドの代わりにプロパティを宣言できますか?
どちらがより好ましいですか?
インターフェイスITaggable {string GetTag(); }
または
インタフェースITaggable {タグ{取得;}。ネットの世界に住んでいる}
インタフェースではメソッドの代わりにプロパティを宣言できますか?
。
もちろんです。インターフェイスのプロパティは、クラスとまったく同じように使用します。
フレームワークの例には、IEnumerator<T>.Current
とICollection<T>.Count
が含まれます。
このようなシナリオでは、プロパティを使用しても問題ありません。私はGetFoo()メソッドとは対照的に、実際に値を取得しているときにプロパティを使用する方が好きです。
この場合、プロパティは間違いなく推奨されます。
目的の実装言語がプロパティをサポートする場所では、インターフェイスでも使用するのは間違いありません(もちろん、意図したターゲットが言語の場合はgetter/setterアクセサに固執する必要があります)それはプロパティのサポートに欠けている)。
私はあなたが読み込み専用のプロパティを宣言しようとすると(プライベートセッターを使わなくても)、コンパイラは代わりにメソッドを使うよう助言します。
実際の選択については、それはあなたが従っている特定の状況、コーディングスタイル、デザインアプローチの問題です。
通常の区別(少なくとも私が使用するもの、私は本当にそれが "通常"であることを願っています))とプロパティの間には依然として適用されます。
という名前の識別子(プロパティまたはメソッド)を介してオブジェクトからデータを取得する行為はいずれかの場合:
...それは方法でなければなりません。
操作が軽量で、副作用がない場合は、プロパティにすることができます。
人の名前を読み取ることはプロパティであるため、その値はおそらくオブジェクトの先頭にあるはずです。
しかし、彼がシステムに持っている注文の数を調べるには、おそらくもっと高価な操作をしなければならないので、おそらく方法であるはずです。
少なくともこれが私が使用する基準です。
これはクラスまたはインターフェイスかどうかはこの点で違いはありません。
具体的なケースでは、私はそのプロパティに行きます。 「タグ付け可能」アイテムはそのタグを知っている必要があります。