在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    C#-Linq源碼解析之Any

    前言

    在Dotnet開(kāi)發(fā)過(guò)程中,Any作為IEnumerable的擴(kuò)展方法,十分常用。本文對(duì)Any方法的關(guān)鍵源碼進(jìn)行簡(jiǎn)要分析,以方便大家日后更好的使用該方法。

    使用

    Any 確定序列中是否包含元素或存在元素滿足指定條件。

    看這樣一個(gè)例子,我們判斷集合中是否存在元素

    List lstUserInforMations = new List();bool flag = lstUserInforMations.Any();flag= lstUserInforMations.Any(o=>o.Sex==”男”);

    當(dāng)然flag都為false。

    我們現(xiàn)在給集合賦值

    //賦值lstUserInforMations = new List { new UserInforMation{UserName=”張三”,Sex=”男”}, new UserInforMation{UserName=”李四”,Sex=”女”},};flag = lstUserInforMations.Any();flag = lstUserInforMations.Any(o => o.Sex == “男”);

    只要有一個(gè)條件滿足,當(dāng)然就會(huì)返回true了

    源碼解析

    第一個(gè)方法

    public static bool Any(this IEnumerable source)

    參數(shù)

    返回值

    • bool

    該方法表示 只要有一個(gè)元素存在就返回True,否則返回false。

    IEnumerable修飾我們的源元素類型,那么我們就知道源元素是一個(gè) 可以獲得循環(huán)訪問(wèn)集合的枚舉器那么我們就可以使用GetEnumerator這個(gè)方法進(jìn)行迭代了。

    然后我們?cè)谑褂肕oveNext方法,來(lái)遍歷集合的元素!

    源碼:

    public static bool Any(this IEnumerable source){ if (source == null) { throw null; } using (IEnumerator enumerator = source.GetEnumerator()){ if (enumerator.MoveNext()) { eturn true; } }return false;}

    第二個(gè)方法

    public static bool Any(this IEnumerable source, Func predicate)

    參數(shù)

    • source 元素的類型
    • Func predicate 該委托用于判斷某元素是否滿足某個(gè)條件,這個(gè)func委托接收一個(gè)和源元素相同的參數(shù)類型,并返回一個(gè)bool!

    返回值

    • bool

    我們?cè)诘谝粋€(gè)方法上改進(jìn),使用foreach遍歷源元素,如果有一個(gè)滿足我們就返回true

    源碼:

    public static bool Any(this IEnumerable source, Func predicate) { if (source == null) { throw null; } if (predicate == null) { throw null; } foreach (TSource item in source) { if (predicate(item)) { return true; } } return false;}

    總結(jié)

    在我們了解了any的源碼后,我們?cè)谂袛嗉蠟榭盏臅r(shí)候是不是使用Any() 比Count() 更好一點(diǎn)了呢?歡迎留言討論

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年6月14日 06:07
    下一篇 2022年6月14日 06:08

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息