亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

      
      

            <dl id="hur0q"><div id="hur0q"></div></dl>

                C#-Linq源碼解析之Any

                前言

                在Dotnet開發(fā)過程中,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)訪問集合的枚舉器那么我們就可以使用GetEnumerator這個(gè)方法進(jìn)行迭代了。

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

                源碼:

                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)刪除。
                用戶投稿
                吉利汽車?yán)峡偫顣L寡?,特斯拉真正目的不是造車?何出此言?/span>
                上一篇 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é)假日休息