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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

foreach循環(huán)如何在C#中工作?

foreach循環(huán)如何在C#中工作?

C#
溫溫醬 2019-07-30 15:36:25
foreach循環(huán)如何在C#中工作?哪些類(lèi)可以使用foreach循環(huán)?
查看完整描述

2 回答

?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

實(shí)際上,嚴(yán)格來(lái)說(shuō),您需要使用的foreach只是一個(gè)使用方法和屬性GetEnumerator()返回內(nèi)容的公共方法。但是,最常見(jiàn)的含義是“實(shí)現(xiàn)/ ,返回/的東西” 。bool MoveNext()? Current {get;}IEnumerableIEnumerable<T>IEnumeratorIEnumerator<T>

通過(guò)暗示,這包括任何實(shí)現(xiàn)ICollectionICollection<T>,如像什么Collection<T>,List<T>,陣列(T[])等。因此,任何標(biāo)準(zhǔn)的“數(shù)據(jù)集”將通常支持foreach。

為了證明第一點(diǎn),以下工作正常:

using System;class Foo {
    public int Current { get; private set; }
    private int step;
    public bool MoveNext() {
        if (step >= 5) return false;
        Current = step++;
        return true;
    }}class Bar {
    public Foo GetEnumerator() { return new Foo(); }}static class Program {
    static void Main() {
        Bar bar = new Bar();
        foreach (int item in bar) {
            Console.WriteLine(item);
        }
    }}

它是如何工作的?

foreach(int i in obj) {...}有點(diǎn)類(lèi)似的foreach循環(huán)等同于:

var tmp = obj.GetEnumerator();int i; // up to C# 4.0while(tmp.MoveNext()) {
    int i; // C# 5.0
    i = tmp.Current;
    {...} // your code}

但是,有變化。例如,枚舉器(tmp)支持IDisposable,它也被使用(類(lèi)似于using)。

注意循環(huán)中內(nèi)部(C#5.0)與外部(上升C#4.0)的聲明“ int i” 的位置不同。如果您在代碼塊中使用匿名方法/ lambda,這一點(diǎn)很重要。但那是另一個(gè)故事;-pi


查看完整回答
反對(duì) 回復(fù) 2019-07-30
?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

根據(jù)Duck Notation博客文章,使用鴨子打字。


查看完整回答
反對(duì) 回復(fù) 2019-07-30
  • 2 回答
  • 0 關(guān)注
  • 395 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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