2013-03-08 14 views
1

我已經開始使用MVC。在MVC中的DropDownList一些教程中,我看見給出低於該返回IEnumerable類型的屬性: -我們不能在接口中創建對象,但返回類型如何成爲接口?

public IEnumerable<location> ListofLocation{get;set;} 

上述性質是模型的一個屬性,它返回的將在下拉列表填充位置的列表。

我的問題是「如果我們不能創建一個接口的對象,那麼爲什麼這個返回類型在接口」?

+1

任何你覺得你需要喊出你的問題的原因? – 2013-03-08 06:55:16

回答

11

但是返回類型如何成爲一個接口?

這意味着方法可以返回實現該特定接口的類的對象。

對於您的示例屬性。

public IEnumerable<location> ListofLocation{get;set;} 

ListofLocation可以List<Location>因爲List<T>實現IEnumrable<T>

+0

這意味着此屬性可以返回arraylist,hastable,列表或我可以說任何類型的繼承IEnumerable接口的集合? – 2013-03-08 06:59:21

+0

@ user1648559,不是繼承,實現應該是正確的術語,再加上'ArrayList'不實現'IEnumerable ',而不是ArrayList和HashTable,你應該分別查看它們的通用版本'List '和Dictionary(如果你正在使用.Net框架2.0或更高) – Habib 2013-03-08 07:05:05

+0

非常感謝,哈比卜先生 – 2013-03-08 07:06:04

1

當您返回實現特定接口的對象,你會得到一個只包含在該接口上定義的公共屬性和方法的對象。對象公開的所有其他方法都被屏蔽掉。

這就是對象實現接口的含義。該對象滿足界面的合同。

同樣,同一個對象可能會暴露滿足某些其他接口的屬性和方法。因此,您也可以使用您用於滿足第一個界面的相同對象返回其他界面類型的對象。

最後,一個接口可以用不同的對象來實現。這允許您更改接口的底層實現(即行爲),同時仍然履行與接口用戶的接口合同。

相關問題