内射白浆一区二区在线观看_顶级欧美做受XXX000大乳_野狼AV午夜福利在线_国产精品亚洲一区二区无码_亚洲久热无码中文字幕人妖_国产免费人成视频在线观看_成人精品视频一区二区_自拍偷自拍亚洲精品10P_日日天日日夜日日摸_成人无码www免费视频苹果版

歡迎您訪問(wèn)深入理解Yield關(guān)鍵字的用法與優(yōu)勢(shì):代碼實(shí)戰(zhàn)與斷點(diǎn)調(diào)試指南!

深入理解Yield關(guān)鍵字的用法與優(yōu)勢(shì):代碼實(shí)戰(zhàn)與斷點(diǎn)調(diào)試指南

更新時(shí)間:2024-12-31 09:56:10作者:佚名

我們學(xué)習(xí)知識(shí)的目的就是為什么要使用yield關(guān)鍵字,不使用可以嗎?相信會(huì)更有趣。

首先貼出正常輸出偶數(shù)集的方法。

/*
 *
 *  學(xué)習(xí)Yield Return 語(yǔ)法
 *  使用兩個(gè)方法,顯示1 - 100之間的全部偶數(shù)
 * 
 * 
 */
using System;
using System.Collections.Generic;
namespace YieldReturn語(yǔ)法解析
{
    class Program
    {
       static  private List<int> _numArray; //用來(lái)保存1-100 這100個(gè)整數(shù)
        Program() //構(gòu)造函數(shù)。我們可以通過(guò)這個(gè)構(gòu)造函數(shù)往待測(cè)試集合中存入1-100這100個(gè)測(cè)試數(shù)據(jù)
        {
            _numArray = new List<int>(); //給集合變量開(kāi)始在堆內(nèi)存上開(kāi)內(nèi)存,并且把內(nèi)存首地址交給這個(gè)_numArray變量
            for (int i = 1; i <= 100; i++) 
            {
                _numArray.Add(i);  //把1到100保存在集合當(dāng)中方便操作
            }
        }
        static void Main(string[] args)
        {
            new Program();
            TestMethod();
        }
        //測(cè)試求1到100之間的全部偶數(shù)
        static  public void TestMethod()
        {
            foreach (var item in GetAllEvenNumber()) 
            {
                Console.WriteLine(item); //輸出偶數(shù)測(cè)試
            }
        }
        //測(cè)試我們正常情況下拿到全部偶數(shù)的方法
       static  IEnumerable<int> GetAllEvenNumber()
        {
            List<int> result = new List<int>(); //開(kāi)集合內(nèi)存存偶數(shù)用
            foreach (int num in _numArray) 
            {
                if(num % 2 == 0) //判斷是不是偶數(shù)
                {
                    //yield return num;
                    result.Add(num); //存入集合
                }
            }
            //返回偶數(shù)集合變量   可能有人會(huì)覺(jué)得奇怪返回類(lèi)型不是List這樣可以嗎
            //這個(gè)就要回到我們的里氏替換原則了,子類(lèi)是可以替換父類(lèi)的,也就是當(dāng)父類(lèi)用
            //比如我這個(gè)方法是想得到IEnumerable 類(lèi)型變量,但是我給了List類(lèi)型變量
            //注意List 是繼承 IEnumerable 的,什么意思當(dāng)我們把子類(lèi)當(dāng)父類(lèi)使用,
            //那么大才小用,因?yàn)樽宇?lèi)很多都是繼承父親,你自身增加很多字段或者方法,這樣就不能用了。
            return result;  
            //yield break;
        }
    }
}

發(fā)布使用 Yiele Return 方法輸出耦合集合

/*
 *
 *  學(xué)習(xí)Yield Return 語(yǔ)法
 *  使用兩個(gè)方法,顯示1 - 100之間的全部偶數(shù)
 * 
 * 
 */
using System;
using System.Collections.Generic;
namespace YieldReturn語(yǔ)法解析
{
    class Program
    {
       static  private List<int> _numArray; //用來(lái)保存1-100 這100個(gè)整數(shù)
        Program() //構(gòu)造函數(shù)。我們可以通過(guò)這個(gè)構(gòu)造函數(shù)往待測(cè)試集合中存入1-100這100個(gè)測(cè)試數(shù)據(jù)
        {
            _numArray = new List<int>(); //給集合變量開(kāi)始在堆內(nèi)存上開(kāi)內(nèi)存,并且把內(nèi)存首地址交給這個(gè)_numArray變量
            for (int i = 1; i <= 100; i++) 
            {
                _numArray.Add(i);  //把1到100保存在集合當(dāng)中方便操作
            }
        }
        static void Main(string[] args)
        {
            new Program();
            TestMethod();
        }
        //測(cè)試求1到100之間的全部偶數(shù)
        static  public void TestMethod()
        {
            foreach (var item in GetAllEvenNumber()) 
            {
                Console.WriteLine(item); //輸出偶數(shù)測(cè)試
            }
        }
        //測(cè)試我們使用Yield Return情況下拿到全部偶數(shù)的方法
       static  IEnumerable<int> GetAllEvenNumber()
        {
            foreach (int num in _numArray) 
            {
                if(num % 2 == 0) //判斷是不是偶數(shù)
                {
                    yield return num; //返回當(dāng)前偶數(shù)
                }
            }        
            yield break;  //當(dāng)前集合已經(jīng)遍歷完畢,我們就跳出當(dāng)前函數(shù),其實(shí)你不加也可以
            //這個(gè)作用就是提前結(jié)束當(dāng)前函數(shù),就是說(shuō)這個(gè)函數(shù)運(yùn)行完畢了。
        }
    }
}

你測(cè)試過(guò)這2個(gè)代碼的結(jié)果嗎?你能正確得到所有偶數(shù)組嗎?我需要你專(zhuān)門(mén)測(cè)試一下。只有這樣,你才能快速進(jìn)步,才能真正學(xué)會(huì)。只要觀看并練習(xí)假動(dòng)作即可。

現(xiàn)在我們來(lái)談?wù)勊鼈兊膮^(qū)別:

這才是你真正需要學(xué)習(xí)的地方

我們需要設(shè)置一個(gè)斷點(diǎn)

這里寫(xiě)圖片描述

我希望您在斷點(diǎn)處進(jìn)行調(diào)試。如果你貼的細(xì)節(jié)太多,你會(huì)發(fā)現(xiàn)in return是什么意思,當(dāng)代碼到達(dá)Yield return num時(shí),當(dāng)前函數(shù)就會(huì)結(jié)束,num會(huì)被移交給這里。我先給你看圖片。

這里寫(xiě)圖片描述

最后,將給出 item 變量。

然后輸出,然后執(zhí)行GetAllEvenNumber()方法,與最后一個(gè)偶數(shù)相同。

我們發(fā)現(xiàn)這個(gè)Yield Return可以將當(dāng)前函數(shù)的進(jìn)程狀態(tài)切換為阻塞狀態(tài)貝語(yǔ)網(wǎng)校,然后選擇將CPU交給當(dāng)前傳出進(jìn)程,從而可以轉(zhuǎn)而執(zhí)行調(diào)用者函數(shù)。 (補(bǔ)充一點(diǎn)知識(shí),我們寫(xiě)的程序添加到內(nèi)存中并不一定是一個(gè)進(jìn)程,我們會(huì)根據(jù)情況將其劃分為若干個(gè)子進(jìn)程,以方便操作系統(tǒng)的管理以及多個(gè)進(jìn)程的運(yùn)行)內(nèi)存中的程序以提高計(jì)算機(jī)資源的利用率)

這有一個(gè)優(yōu)點(diǎn)。如果我們有 1,000,000 個(gè)數(shù)據(jù),我們需要獲取內(nèi)部的耦合。當(dāng)我們通過(guò)這個(gè)方法得到一個(gè)耦合后in return是什么意思,它會(huì)立即顯示在控制臺(tái)上。不用等待很長(zhǎng)時(shí)間,而是找到所有偶數(shù)并將其存儲(chǔ)在集合中,然后一一輸出。

這個(gè)好處是巨大的。比如我們的用戶(hù)可能只是一開(kāi)始看數(shù)據(jù),確定不是所有的值都是需要的,讀完這些之后再看剩下的,這樣數(shù)據(jù)就會(huì)感覺(jué)顯示沒(méi)有延遲。

接下來(lái),我們斷點(diǎn)并調(diào)整通用函數(shù)來(lái)查找偶數(shù)。

這里寫(xiě)圖片描述

我們發(fā)現(xiàn)這個(gè)循環(huán)在完成之前不會(huì)退出當(dāng)前函數(shù),也就是說(shuō),我們必須找到所有偶數(shù)。所以如果我們有很多數(shù)據(jù)。它將等待該數(shù)據(jù),然后才能獲取該數(shù)據(jù)并將其顯示給用戶(hù)。

這就麻煩了。

所以我們得出結(jié)論:Yield Return關(guān)鍵字的作用是退出當(dāng)前函數(shù),保存當(dāng)前函數(shù)執(zhí)行的地方,也就是上下文。你發(fā)現(xiàn)上次運(yùn)行的代碼不會(huì)再執(zhí)行,直到下次執(zhí)行這個(gè)函數(shù)。

但你一般的返回結(jié)果是,如果你在循環(huán)體內(nèi)提前返回,下面調(diào)用這個(gè)函數(shù)就會(huì)從第一步重新執(zhí)行。不記錄最后執(zhí)行位置。

為您推薦

2023年西安工程技術(shù)學(xué)校錄取分?jǐn)?shù)線

每年中考過(guò)后,學(xué)生們都到處去尋找有關(guān)自己理想院校的信息,比如招生計(jì)劃、招生辦聯(lián)系電話、招生條件、地址等,其中助學(xué)政策是大家最關(guān)注的信息之一了,其中西安工程技術(shù)學(xué)校的助學(xué)政策是大家比較關(guān)注的問(wèn)題,下面小編特別整理了西安工程技術(shù)學(xué)校助學(xué)政策情況,以供考生參考,希望能給大家有所幫助。

2024-12-31 10:16

Dirty Look是什么意思?揭秘英文中臭臉、不悅表情的用法與例句

look”是什么意思嗎?old.face來(lái)表現(xiàn)。在口語(yǔ)中,常用這一句來(lái)詢(xún)問(wèn)別人有什么不開(kāi)心的。it?這個(gè)短語(yǔ)從字面意思上來(lái)看,就是指看向別人的眼睛/臉。oneonepeopleonly).someonesomeonesomeoneon,意思是“看不起,小看,蔑視”

2024-12-31 08:46

in respect of是什么意思 這個(gè)殺手不太冷:Luc Besson經(jīng)典之作,Jean Reno與Mathilda7

那咱們就說(shuō)說(shuō)這部電影的中文名字——《這個(gè)殺手不太冷》(不是為了被人尊重)如果你跟著歌詞聽(tīng)完這首歌,是不是有些摸不著頭腦。全篇歌詞始終沒(méi)告訴你心是什么形狀的,卻一直反復(fù)強(qiáng)調(diào)“這不是我心的形狀”。整首歌一直在講撲克,而在撲克中,這三個(gè)詞的意思是:

2024-12-31 08:26

江西財(cái)經(jīng)大學(xué)等江西雙非院校實(shí)力強(qiáng)勁,就業(yè)率高的大學(xué)推薦

江西的大學(xué)數(shù)量不算少,但211大學(xué)只有南昌大學(xué)一所,不過(guò)江西還有一些雙非院校實(shí)力很不錯(cuò),專(zhuān)業(yè)也很有特色。這所大學(xué)2023年在江西省的招生分?jǐn)?shù)才500多分,性?xún)r(jià)比不錯(cuò),適合分?jǐn)?shù)中等的學(xué)生報(bào)考。對(duì)于大專(zhuān)生來(lái)說(shuō),這所學(xué)校非常好,因?yàn)槟么髮?zhuān)的分?jǐn)?shù)就可以進(jìn)鐵路局還是不錯(cuò)的。

2024-12-30 21:49

七下U1單元join, join in, take part in要點(diǎn)口訣及用法詳解

in要點(diǎn)口訣in要點(diǎn)口訣一個(gè)單詞是join。in有什么區(qū)別in都有參加的意思,所以在平時(shí)不管是考試,還是對(duì)話中經(jīng)常會(huì)遇到不知道用哪個(gè)的情況,今天我們就來(lái)對(duì)比一下他們之間的區(qū)別,用例句來(lái)詳細(xì)說(shuō)明下它們之間有什么不同。in是參與到一項(xiàng)活動(dòng)中,后面跟表示“活動(dòng)”的詞,如:in不可以和join互換。

2024-12-30 21:17

初中英語(yǔ)常用短語(yǔ)對(duì)比解析:happen與take place、must與have to的區(qū)別

arrive為不及物動(dòng)詞,后面接介詞in或at。to常用于口語(yǔ),可代替前二者。of是短語(yǔ)介詞,后面接名詞性詞語(yǔ)。time多數(shù)情況下作名詞短語(yǔ),意為一些時(shí)間;一些時(shí)候;它還可以作副詞詞組,用來(lái)表示一個(gè)未肯定的時(shí)刻,此時(shí)它可與sometime互換。

2024-12-30 20:55

加載中...