第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

IEnumerable<T>和IEnumerator的問題

IEnumerable<T>和IEnumerator的問題

寶慕林4294392 2018-08-23 08:05:55
我在泛型中使用迭代器的時候,《C#入門經(jīng)典》中說要同時實現(xiàn)IEnumerable GetEnumerator()和IEnumerable<T> GetEnumerator()。然后我就去查看了MSDN,我看到上面說IEnumerable<T>中的GetEnumerator()是被重載的,我點擊之后,發(fā)現(xiàn)重載的兩個版本方法名相同,都沒有參數(shù)。這能叫重載嗎?唯一的區(qū)別就是后面的介紹多了個——(繼承自 IEnumerable)
查看完整描述

2 回答

?
慕碼人2483693

TA貢獻1860條經(jīng)驗 獲得超9個贊

首先,IEnumerable<T>實現(xiàn)了IEnumerable,并且顯式實現(xiàn)了IEnumerable.GetEnumerator,MSDN中所說的繼承自IEnuerable的那個GetEnumerator,指的就是這個顯式實現(xiàn)。

其次,在設(shè)計實現(xiàn)了IEnumerable<T>的類的時候,除了要實現(xiàn)IEnumerable<T>.GetEnumerator之外,還要顯式實現(xiàn)IEnuerable.GetEnumerator。也就是書上所說的那些。

舉例:


public class People : IEnumerable
{
   private Person[] _people;
   public People(Person[] pArray)
   {
       _people = new Person[pArray.Length];

       for (int i = 0; i < pArray.Length; i++)
       {
           _people[i] = pArray[i];
       }
   }

   IEnumerator IEnumerable.GetEnumerator()
   {
      return (IEnumerator) GetEnumerator();
   }

   public PeopleEnum GetEnumerator()
   {
       return new PeopleEnum(_people);
   }
}


返回類型為PeopleEnum的GetEnumerator得到的是強類型的IEnumerator,而IEnumerable.GetEnumerator得到的是弱類型的。之所以這么設(shè)計,是為了向后兼容,因為很多舊的系統(tǒng)使用的都是IEnumerable,新的代碼需要兼容這些接口。


查看完整回答
反對 回復(fù) 2018-08-27
?
守著星空守著你

TA貢獻1799條經(jīng)驗 獲得超8個贊

namespace is : System.Collections   

public interface IEnumerable
{

 IEnumerator GetEnumerator();

}

namespace is :System.Collections.Generic

public interface IEnumerable<out T> : IEnumerable
{
        IEnumerator<T> GetEnumerator();
}

下面這個是上面的范型


查看完整回答
反對 回復(fù) 2018-08-27
  • 2 回答
  • 0 關(guān)注
  • 747 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號