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

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

為什么在IEnumerable上沒有ForEach擴(kuò)展方法?

為什么在IEnumerable上沒有ForEach擴(kuò)展方法?

一只甜甜圈 2019-07-11 16:42:30
為什么在IEnumerable上沒有ForEach擴(kuò)展方法?受另一個問題的啟發(fā),詢問失蹤的人Zip職能:為什么沒有ForEach中的可拓方法Enumerable班級,等級?或者任何地方?唯一一個獲得ForEach方法是List<>..有什么原因?qū)е滤娜笔?表現(xiàn))嗎?
查看完整描述

3 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗 獲得超6個贊

語言中已經(jīng)包含了一個foreach語句,大多數(shù)時候都是這樣做的。

我不想看到以下情況:

list.ForEach( item =>{
    item.DoSomething();} );

而不是:

foreach(Item item in list){
     item.DoSomething();}

后者更清晰易懂。在大多數(shù)情況下雖然打字的時間可能會長一點。

但是,我必須承認(rèn),我改變了在這個問題上的立場;在某些情況下,F(xiàn)orEach()擴(kuò)展方法確實是有用的。

以下是聲明和方法的主要區(qū)別:

  • 類型檢查:Foreach是在運行時完成的,F(xiàn)orEach()是在編譯時完成的(Big Plus!)
  • 調(diào)用委托的語法確實要簡單得多:objects.ForEach(DoSomething);
  • ForEach()可以鏈接起來:盡管這樣一個特性的邪惡/有用性是可以討論的。

這些都是很多人提出的很好的觀點,我能理解為什么人們會錯過這個功能。我不介意微軟在下一個框架迭代中添加一個標(biāo)準(zhǔn)的ForEach方法。


查看完整回答
反對 回復(fù) 2019-07-11
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗 獲得超8個贊

您可以編寫此擴(kuò)展方法:

// Possibly call this "Do"IEnumerable<T> Apply<T> (this IEnumerable<T> source, Action<T> action){
    foreach (var e in source)
    {
        action(e);
        yield return e;
    }}

行家

允許鏈接:

MySequence
    .Apply(...)
    .Apply(...)
    .Apply(...);

反方

它實際上不會做任何事情,除非你做一些強(qiáng)制迭代的事情。因此,它不應(yīng)該被稱為.ForEach()..你可以寫.ToList()最后,也可以編寫這個擴(kuò)展方法:

// possibly call this "Realize"IEnumerable<T> Done<T> (this IEnumerable<T> source){
    foreach (var e in source)
    {
        // do nothing
        ;
    }

    return source;}

這可能與交付的C#庫有太大的不同;不熟悉擴(kuò)展方法的讀者將不知道如何處理您的代碼。


查看完整回答
反對 回復(fù) 2019-07-11
  • 3 回答
  • 0 關(guān)注
  • 502 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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