C#-Linq源碼解析之Any

前言

在Dotnet開發過程中,Any作為IEnumerable的擴展方法,十分常用。本文對Any方法的關鍵源碼進行簡要分析,以方便大家日后更好的使用該方法。

使用

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

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

List<UserInforMation>?lstUserInforMations?=?new?List<UserInforMation>();
bool?flag?=?lstUserInforMations.Any();
flag=?lstUserInforMations.Any(o=>o.Sex=="男");

當然flag都為false。

我們現在給集合賦值

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

只要有一個條件滿足,當然就會返回true了

源碼解析

第一個方法

public?static?bool?Any<TSource>(this?IEnumerable<TSource>?source)
參數
  • source 元素的類型

返回值
  • bool

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

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

然后我們在使用MoveNext方法,來遍歷集合的元素!

源碼:
public?static?bool?Any<TSource>(this?IEnumerable<TSource>?source)
{if?(source?==?null){throw?null;}using?(IEnumerator<TSource>?enumerator?=?source.GetEnumerator())
{if?(enumerator.MoveNext()){eturn?true;}}return?false;
}

第二個方法

public?static?bool?Any<TSource>(this?IEnumerable<TSource>?source,?Func<TSource,?bool>?predicate)
參數
  • source 元素的類型

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

返回值
  • bool

我們在第一個方法上改進,使用foreach遍歷源元素,如果有一個滿足我們就返回true

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

總結

在我們了解了any的源碼后,我們在判斷集合為空的時候是不是使用Any()?比Count()?更好一點了呢?歡迎留言討論

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286169.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286169.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286169.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python_getopt解析命令行輸入參數的使用

[cpp] view plaincopyprint? import getopt import sys config { "input":"", "output":".", } #getopt三個選項&#xff0c;第一個一般為sys.argv[1:],第二個參數為短參數&#xff0c;如…

五、登錄頁倒計時制作《仿淘票票系統前后端完全制作(除支付外)》

一、登錄功能的實現 首先打開在線編輯器進入我們的項目&#xff1a;https://editor.ivx.cn/ 上一節我們已經完成了基本頁面的制作&#xff0c;在本節中&#xff0c;我們將會開始完成登錄功能的實現。 實現登錄功能需要增加一個用戶組件&#xff1a; 這個用戶組件是需要選擇…

【MATLAB統計分析與應用100】案例001:matlab使用Importdata函數導入文本txt數據

配套實驗數據包下載&#xff1a;鏈接&#xff1a;https://pan.baidu.com/s/1T4zUFmCIOCKIisdGRQPddg?pwdddi1 文章目錄1. 調用importdata函數讀取文件中的數據2. 調用importdata函數讀取文件數據&#xff0c;返回結構體變量x3. 調用importdata函數讀取文件中的數據&#xff0c…

TextView的部分點擊事件和點擊事件

1.在TextView中實現部分點擊 我在activity中使用了clickablespan這個類&#xff0c;然后完全按照視頻上的操作下來&#xff0c;發現點擊時不響應&#xff0c;于是我便設置了電話的鏈接&#xff0c;發現這時點擊 自己設置的區域就會響應&#xff0c;但是如果我把電話鏈接刪了&am…

C語言試題四十之使字符串中尾部的*號不得多于n個;若多于n個,則刪除多于的*號;若少于或等于n個,則什么也不做,字符串中間和前面的*號不刪除。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫一個…

Meta http-equiv屬性詳解

Meta http-equiv屬性詳解 博客分類&#xff1a; Web綜合HTML瀏覽器IECache搜索引擎 http-equiv顧名思義&#xff0c;相當于http的文件頭作用&#xff0c;它可以向瀏覽器傳回一些有用的信息&#xff0c;以幫助正確和精確地顯示網頁內容&#xff0c;與之對應的屬性值為content&am…

MAUI 入門教程系列(3.多目標平臺)

前言如果您是第一次創建MAUI項目, 并且在之前也并沒有接觸過Xamarin.Forms應用, 或許你并不知道MAUI的強大優勢, 在原來的Xamarin.Forms當中, 我們基于不同平臺的項目他們是單獨維護的。如下所示:因為如此, 你需要維護不同平臺的項目。包括每個項目當中包含的資源、圖像、屬性定…

關于質量的聯想:消費示范效應

IT業界有新聞說&#xff0c;根據可靠性數據研究專家Rescue.com發布的今年一季度可靠性報告&#xff0c;“五大電腦公司中&#xff0c;聯想-IBM的分數高居首位&#xff0c;第二名是華碩&#xff0c;之前的可靠性冠軍蘋果跌落第三&#xff0c;東芝、惠普-康柏則排在第五”。大部分…

六、注冊頁功能制作《仿淘票票系統前后端完全制作(除支付外)》

一、注冊塊內容制作 首先打開在線編輯器進入我們的項目&#xff1a;https://editor.ivx.cn/ 上一節已經知道了如何制作登錄塊內容&#xff0c;但是咱們先做還沒有注冊&#xff0c;所以就測試不了登錄塊功能&#xff0c;現在咱們同樣的&#xff0c;在注冊塊中添加一個變量和一…

【MATLAB統計分析與應用100例】案例002:matlab使用xlsread函數讀取excel中的數據

文章目錄 1. 讀取文件excel表中單元格A2:H4中的數據2. 讀取excel第1個工作表中單元格A2:C3中的數據,將數據分別加1后返回3. 讀取excel第1個工作表中單元格A2:H2中的數據,將讀取到的數據分別加1,返回數值矩陣num,文本矩陣txt,元胞數組raw,變換后數值矩陣X1. 讀取文件excel…

美圖秀秀首頁界面按鈕設計(二)

本文實現美圖秀秀首頁中的按鈕&#xff0c;它包含3張圖片和一個文本。通過開發按鈕&#xff0c;我們可以學到iOS的自定義控件&#xff0c;繪制圖片和文本的知識。【聲明&#xff1a;本博客只能用作學習用途&#xff0c;不得用于商業用途&#xff0c;圖片資源均來自官方&#xf…

C語言試題四十一之請編寫一個函數,用來刪除字符串中的所有空格。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫一個…

第三方免費加固橫向對比

前言 基于java開發的android應用由于其語言的特性&#xff0c;所以很容易被反編譯&#xff0c;雖然android提供了proguard&#xff0c;但是也只是增加了源碼閱讀的難度&#xff0c;其中業務邏輯依舊可以分析得出。有些人通過各種破解手段將apk文件破解、反編譯&#xff0c;然后…

(02).NET MAUI實戰 布局

1.概要既然要做實戰開發會建項目之后就需要認識布局控件了&#xff0c;本篇文章分享.NET MAUI中的一些基礎常用的布局控件。GridStackLayoutFalyxLayoutAbsoluteLayout2.詳細內容(1)Grid語法&#xff1a;<Grid RowDefinitions"50,50,50,50" RowSpacing"10&qu…

[Javascript] Avoid Creating floats if they are not needed

https://channel9.msdn.com/Series/Practical-Performance-Tips-to-Make-Your-HTMLJavaScript-Faster/06?WT.mc_id13400-DEV-sitepoint-article24 轉載于:https://www.cnblogs.com/yoyohappy/p/5884629.html

七、后臺入口及添加影院實現《仿淘票票系統前后端完全制作(除支付外)》

一、登錄后臺窗口顯示與跳轉 首先打開在線編輯器進入我們的項目&#xff1a;https://editor.ivx.cn/ 上一節已經完成了登錄和注冊功能&#xff0c;在這一節咱們將會實現對應的后臺入口進入和一些后臺功能的制作。 首先咱們需要記錄一下登錄的UID&#xff0c;因為咱們后臺界面…

正則表達式 學習筆記4.3

下面看看逆序環視結構&#xff1a;publicclassGeneralSix { publicstaticvoidmain(String[] args) { String[] strings newString[]{"see","bee","tee"};String[] regexs newString[]{"(?<s)ee","(?<!s)ee"}; for…

【MATLAB統計分析與應用100例】案例003:matlab調用smooth函數進行加噪數據的平滑處理

文章目錄 1. 產生加噪正弦波信號,繪制加噪波形圖2. 利用移動平均法對加噪信號進行平滑處理,繪制平滑波形圖3. 利用lowess方法對加噪信號進行平滑處理,繪制平滑波形圖4. 利用rlowess方法對加噪信號進行平滑處理,繪制平滑波形圖5. 利用loess方法對加噪信號進行平滑處理,繪制…

C語言試題四十二之假定輸入的字符串中只包含字母和*號。請編寫函數fun,它的功能是:將字符串中的前導*號全部移到字符串的尾部。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫一個…

linux curl模擬登錄網頁

有時在批量抓取網站頁面內容時&#xff0c;是需要處于登錄狀態的&#xff0c;否則無法獲取。curl這個強大的工具可以完成這個工作。之前最好也先了解一下http POST方法&#xff0c;網站登錄大都是用這個辦法。本文基本上參考這篇文章,來自依云s Blog&#xff0c;是archlinux中文…