返回類型是接口的討論
http://bbs.csdn.net/topics/380209722
public static IList<int> a()
{
b=new List<int>();
return b;
}
這里不是返回一個List, 而是IList接口是什么意思呢?
=========================================================================
如果你編寫一個函數,確定只返回某個類型。那么在選擇 返回值 類型的時候,越精確越好。
比如 string string.Replace(string, string),就比object string.Replace(string, string)好。
如果明知你返回的是一個類型,那調用時還要用接口來聲明變量,沒有意義。但是在這樣一種情況下例外(我不想說的不嚴謹被有些人說,但是的確這種例外的情況你很難遇到):就是這個類顯式實現了某個接口,同時你又要使用這個接口的方法,某個場景是,這個類實現了兩個不同的接口,這兩個接口有方法簽名相同但是含義不同的兩個方法,因此類顯式實現接口。這時候你得指定所用的接口類型而不是返回值類型。
=================================================================================
返回接口一般運用於抽象層。
IList<T>可以理解為女人。
List<T>可以理解你女朋友。
你女朋友可以具有女人這個屬性,但是並不是每個具有女人屬性的人都是你女朋友。
而廁所就有個明確的定義 符合女人這個定義就可以進女廁所。不符合的就不能進。(當然存在BUG,比如清潔工可能是男的。)
你覺得精確到每一個具體的女人有意義么?
=========================================================================
public static IList<int> a()
{
b=new List<int>();
return b;
}
這里返回值類型為:一個IList<T>的泛型接口,這樣的目的是讓返回的b使用得更廣泛,凡是繼承了IList<T>接口的類都可以使用b而不會有類型沖突
=================================================================
方法該返回接口還是具體類,以及面向接口編程
http://www.cnblogs.com/kirinboy/archive/2012/03/08/should-method-return-interface-or-concrete-class-and-programming-to-an-interface.html