2012-05-25 90 views
1

我正在使用這樣的接口:接口和索引

var descr = new IMyInterface[3]; 

在我以爲這樣做沒有任何意義,因爲它看起來像一個接口被實例化(這ISN」乍一看可能)。所以我認爲這可能是對界面中定義的索引器的調用,但我仍然不太明白這是如何工作的。所以我的問題是:

  1. 這是什麼叫做?它是否調用界面中定義的索引器?
  2. 界面的索引器正在使用什麼實現?

感謝您的幫助:)

+0

也許你還應該解釋你的目標,以幫助你糾正語法。 –

回答

1

您正在創建的3 IMyInterface數組......但每一個項目是數組中無效。

+0

哈哈,我們只是想出了它。很尷尬。我們讀到它太多關於索引器的想法,而不是。感謝您的幫助:) –

2

它創建了一個包含三個元素的IMyInterface數組。即IMyInterface[]。這只是陣列創建的通常的new T[n]語法,與new int[3]沒有什麼不同。

從概念上講,它與new Array<IMyInterface>(3)類似,但由於歷史原因數組不是通用類型。

數組是一個具體類,所以即使成員類型是接口,也可以創建它的一個實例。成員將初始化爲default(T),即null的接口。

這與索引器無關。


可以在接口上定義索引器,就像你可以在類上一樣。但使用它們的語法不涉及new

也可以在某些COM相關方案中實例化接口。

+0

謝謝你的幫助。我們只是自己想清楚了。如果你想一會兒,這是非常明顯的。我們正在閱讀它太多哈哈。謝謝 :) –