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