1

私はこのように使用されているインターフェースを持っています:

var descr = new IMyInterface[3];

一見、インターフェイスがインスタンス化されているように見えるので、これは意味がないと思いました(これは不可能です)。したがって、これはおそらくインターフェイスで定義されたインデクサーの呼び出しだと思いますが、これがどのように機能するかはまだよくわかりません。だから私の質問は:

  1. この呼び出しは何をしていますか?インターフェイスで定義されたインデクサーを呼び出していますか?
  2. インターフェイスのインデクサーのどの実装が使用されていますか?

助けてくれてありがとう :)

4

2 に答える 2

2

IMyInterface3つの要素を持つ配列を作成しています。すなわちIMyInterface[]。これは、配列作成の通常のnew T[n]構文であり、と同じnew int[3]です。

new Array<IMyInterface>(3)概念的には、配列が歴史的な理由からジェネリック型ではないことを除いて、に似ています。

配列は具象クラスであるため、メンバータイプがインターフェイスであっても、そのインスタンスを作成できます。インターフェース用のメンバーが初期化さdefault(T)nullます。

これはインデクサーとは関係ありません。


クラスで行うのと同じように、インターフェイスでインデクサーを定義することができます。ただし、それらを使用するための構文には、は含まれていませんnew

特定のCOM関連のシナリオでインターフェイスをインスタンス化することも可能です。

于 2012-05-25T11:50:17.917 に答える
1

3の配列を作成してIMyInterfaceいます...しかし、各項目は配列内でnullです。

于 2012-05-25T11:50:17.717 に答える