天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

不能不說(shuō)的C#特性-迭代器(下),yield以及流的延遲計(jì)算

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

不能不說(shuō)的C#特性-對(duì)象集合初始化器

不能不說(shuō)的C#特性-匿名類(lèi)型與隱式類(lèi)型局部變量

不能不說(shuō)的C#特性-擴(kuò)展方法

不能不說(shuō)的C#特性-匿名方法和Lambda表達(dá)式

不能不說(shuō)的C#特性-迭代器(上)及一些研究過(guò)程中的副產(chǎn)品

不能不說(shuō)的C#特性-迭代器(下),yield以及流的延遲計(jì)算

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識(shí)篇

走進(jìn)Linq-Linq to SQL How do I(1)

走進(jìn)Linq-Linq to SQL How do I(2)

走進(jìn)Linq-Linq to SQL How do I(3)

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過(guò)程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過(guò)Linq to SQL看Linq


題目:從0遍歷到20(不包括20),輸出遍歷到的每個(gè)元素,并將大于2的所有數(shù)字放到一個(gè)IEnumerable中返回

解答1:(我以前經(jīng)常這樣做)

static IEnumerable<int> WithNoYield()
        {
            IList
<int> list = new List<int>();
            
for (int i = 0; i < 20; i++)
            {
                Console.WriteLine(i.ToString());
                
if(i > 2)
                    list.Add(i);
            }
            
return list;
        }

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

不能不說(shuō)的C#特性-對(duì)象集合初始化器

不能不說(shuō)的C#特性-匿名類(lèi)型與隱式類(lèi)型局部變量

不能不說(shuō)的C#特性-擴(kuò)展方法

不能不說(shuō)的C#特性-匿名方法和Lambda表達(dá)式

不能不說(shuō)的C#特性-迭代器(上)及一些研究過(guò)程中的副產(chǎn)品

不能不說(shuō)的C#特性-迭代器(下),yield以及流的延遲計(jì)算

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識(shí)篇

走進(jìn)Linq-Linq to SQL How do I(1)

走進(jìn)Linq-Linq to SQL How do I(2)

走進(jìn)Linq-Linq to SQL How do I(3)

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過(guò)程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過(guò)Linq to SQL看Linq


測(cè)試1的運(yùn)算結(jié)果

測(cè)試WithNoYield():輸出從0-19的數(shù)字

測(cè)試WithYield():什么都不輸出

測(cè)試2的運(yùn)算結(jié)果

測(cè)試WithNoYield():輸出1-19接著輸出3-19

測(cè)試WithYield():輸出12334455…….

(為節(jié)省空間上面的答案沒(méi)有原樣粘貼,可以自己運(yùn)行測(cè)試)

是不是感到很奇怪,為什么使用了yield的程序表現(xiàn)的如此怪異呢?

測(cè)試1中對(duì)WithYield()的測(cè)試,明明方法調(diào)用了,居然一行輸出都沒(méi)有,難道for循環(huán)根本沒(méi)有執(zhí)行?通過(guò)斷點(diǎn)調(diào)試果然如此,for循環(huán)根本沒(méi)有進(jìn)去,這是咋回事?測(cè)試2中對(duì)WithYield()的測(cè)試輸出是有了,不過(guò)輸出怎么這么有趣?穿插著輸出,在foreach遍歷WithYield()的結(jié)果的時(shí)候,好像不等到最后一條遍歷完,WithYield()不退出,這又是怎么回事?

還是打開(kāi)IL代碼瞧一瞧到底發(fā)生了什么吧

Main方法的IL代碼:

.method private hidebysig static void Main() cil managed
{
    
.entrypoint
    
.maxstack 1
    
.locals init (
        [
0int32 i,
        [
1class [mscorlib]System.Collections.Generic.IEnumerator`1<int32> CS$5$0000)
    
L_0000: call class [mscorlib]System.Collections.Generic.IEnumerable`1<int32> TestLambda.Program::WithYield()
    
L_0005: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`10> [mscorlib]System.Collections.Generic.IEnumerable`1<int32>::GetEnumerator()
    
L_000a: stloc.1 
    
L_000b: br.s L_0020
    
L_000d: ldloc.1 
    
L_000e: callvirt instance !0 [mscorlib]System.Collections.Generic.IEnumerator`1<int32>::get_Current()
    
L_0013: stloc.0 
    
L_0014: ldloca.s i
    
L_0016: call instance string [mscorlib]System.Int32::ToString()
    
L_001b: call void [mscorlib]System.Console::WriteLine(string)
    
L_0020: ldloc.1 
    
L_0021: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext()
    
L_0026: brtrue.s L_000d
    
L_0028: leave.s L_0034
    
L_002a: ldloc.1 
    
L_002b: brfalse.s L_0033
    
L_002d: ldloc.1 
    
L_002e: callvirt instance void [mscorlib]System.IDisposable::Dispose()
    
L_0033: endfinally 
    
L_0034: call string [mscorlib]System.Console::ReadLine()
    
L_0039: pop 
    
L_003a: ret 
    .try L_000b to L_002a finally handler L_002a to L_0034
}

系列文章導(dǎo)航:

走進(jìn)Linq--Linq橫空出世篇

走進(jìn)Linq-輝煌的背后

走進(jìn)Linq-Linq大觀園

不能不說(shuō)的C#特性-對(duì)象集合初始化器

不能不說(shuō)的C#特性-匿名類(lèi)型與隱式類(lèi)型局部變量

不能不說(shuō)的C#特性-擴(kuò)展方法

不能不說(shuō)的C#特性-匿名方法和Lambda表達(dá)式

不能不說(shuō)的C#特性-迭代器(上)及一些研究過(guò)程中的副產(chǎn)品

不能不說(shuō)的C#特性-迭代器(下),yield以及流的延遲計(jì)算

走進(jìn)Linq-Linq to Objects(上)基礎(chǔ)篇

走進(jìn)Linq-Linq to Objects(下)實(shí)例篇

走進(jìn)Linq-Linq to SQL感性認(rèn)識(shí)篇

走進(jìn)Linq-Linq to SQL How do I(1)

走進(jìn)Linq-Linq to SQL How do I(2)

走進(jìn)Linq-Linq to SQL How do I(3)

走進(jìn)Linq-How do I(4)拾遺補(bǔ)零篇第一節(jié)

走進(jìn)Linq-Linq to SQL源代碼賞析 Table的獲取過(guò)程

走進(jìn)Linq-Linq to SQL源代碼賞析之Provider的初始化

走進(jìn)Linq-Linq to SQL源代碼賞析,通過(guò)Linq to SQL看Linq


private bool MoveNext()
    {
        
switch (this.<>1__state)
        {
            
case 0:
                
this.<>1__state = -1;
                
this.<i>5__1 = 0;
                
goto Label_006A;

            
case 1:
                
this.<>1__state = -1;
                
goto Label_005C;

            
default:
                
goto Label_0074;
        }
    Label_005C:
        
this.<i>5__1++;
    Label_006A:
        
if (this.<i>5__1 < 20)
        {
            Console.WriteLine(
this.<i>5__1.ToString());
            
if (this.<i>5__1 > 2)
            {
                
this.<>2__current = this.<i>5__1;
                
this.<>1__state = 1;
                
return true;
            }
            
goto Label_005C;
        }
    Label_0074:
        
return false;
    }

it知識(shí)庫(kù)不能不說(shuō)的C#特性-迭代器(下),yield以及流的延遲計(jì)算,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产成人高清在线观看播放 | 2021全国精品卡一卡二 | 狠狠色香婷婷久久亚洲精品 | 中文字幕无码乱人伦蜜桃 | 丰满五十六十老熟女HD60 | 97色伦图区97色伦综合图区 | 全彩黄漫火影忍者纲手无遮挡 | 纯肉小黄文高H | 国产精品99久久久久久人韩国 | 免费99精品国产自在现线 | 国产欧美一本道无码 | 麻豆高清区在线 | 天天躁夜夜踩很很踩2022 | 国产亚洲日韩在线播放不卡 | 性欧美video另类hd高清 | 1000部做羞羞事禁片免费视频网站 | 欧美123区 | 国产Av影片麻豆精品传媒 | 久久精品人人做人人爽97 | 久久久久久九九 | 日产精品久久久久久久蜜殿 | 一个人免费视频在线观看高清版 | 6080yy奇领电影在线看 | 99久久免费国产精精品 | 国产亚洲欧美在线观看三区 | 亚洲午夜无码久久久久蜜臀av | 精品国产乱码久久久久久免费流畅 | 国内卡一卡二卡三免费网站 | 日韩爽爽影院在线播放 | 麻豆精品传媒2021网站入口 | 麻豆精品国产剧情观看 | 日本浴室日产在线系列 | 国产制服丝袜91在线 | 丰满的美女射精动态图 | 村妇偷人内射高潮迭起 | 国产短视频精品区 | 色欲AV久久综合人妻蜜桃 | 亚洲人视频在线观看 | 成人在线小视频 | 妈妈的朋友5在线观看免费完整版中文 | 很很射影院 |