首先,接口跟class是同一個層次的,它跟class的區別是,接口只有成員的聲明,而沒有實現,也就是說只有方法、屬性的名稱,沒有具體代碼,比如以下接口:
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
注意看,接口IEnumerable中有一個GetEnumerator方法,但是沒有方法的具體代碼,這就是接口的特點。
又有人要問了,接口裏沒有代碼,他怎麼工作呢?其實接口並沒有直接的功能,它只是一種約定的協議,如果某個類實現了某接口,那這個類就具備了某種功能。比如
public class GoodsList : IEnumerable
{
private Goods[] goods;
internal GoodsList(Goods[] goodsarray)
{
goods=new Goods[goodsarray.Length];
for (int i = 0; i < goodsarray.Length; i++)
{
goods[i] = goodsarray[i];
}
}
/// <summary>
/// 實現GetEnumerator方法
/// </summary>
/// <returns></returns>
public IEnumerator GetEnumerator()
{
return new GoodsEnum(goods);
}
}
IEnumerable接口的意思是說 “可以被迭代”,如果GoodsList類實現了IEnumerable接口,並實現了該接口內部的方法,則GoodsList可用於foreach迭代。
(本文代碼僅供參考,實際運行還需需另外添加內容)