您好,登錄后才能下訂單哦!
本篇內容主要講解“.NET 6的TryGetNonEnumeratedCount方法怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“.NET 6的TryGetNonEnumeratedCount方法怎么用”吧!
嘗試下列代碼:
var b = new B<int>(); Console.WriteLine($@"{b.Count()}"); var a = new A<int>(); Console.WriteLine($@"{a.Count()}"); class A<T> : IEnumerable<T> { public IEnumerator<T> GetEnumerator() { throw new NotImplementedException(); } IEnumerator IEnumerable.GetEnumerator() { throw new NotImplementedException(); } } class B<T> : A<T>,ICollection { public int Count => 10086; public bool IsSynchronized => throw new NotImplementedException(); public object SyncRoot => throw new NotImplementedException(); public void CopyTo(Array array, int index) { throw new NotImplementedException(); } }
你會發現,b.Count()能夠執行,而a.Count()會報錯:
這是由LINQ內部實現造成的。
對于某些集合類型,如果無法快速確定集合元素數量——例如Count屬性,調用Count()
則必須枚舉整個集合以確定元素的數量。
在某些情況下,枚舉會嚴重影響程序性能,比如EF Core下使用IQueryable.Count()
就需要訪問數據庫獲取全部記錄才能計數。
因此,更高效地計算序列中的元素數,就是使用TryGetNonEnumeratedCount
方法,如果可以快速計數,該方法將返回true并將計數作為out變量返回。
建議你始終使用以下格式代碼,去獲取可枚舉類型的元素總數:
if (!enumerable.TryGetNonEnumeratedCount(out var count)) { //使用其他方式獲取元素數量 }
到此,相信大家對“.NET 6的TryGetNonEnumeratedCount方法怎么用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。