溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

.NET?6的TryGetNonEnumeratedCount方法怎么用

發(fā)布時間:2022-03-14 15:50:59 來源:億速云 閱讀:149 作者:iii 欄目:開發(fā)技術(shù)

本篇內(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()會報錯: 

.NET?6的TryGetNonEnumeratedCount方法怎么用

二、原理

這是由LINQ內(nèi)部實現(xiàn)造成的。

對于某些集合類型,如果無法快速確定集合元素數(shù)量&mdash;&mdash;例如Count屬性,調(diào)用Count()則必須枚舉整個集合以確定元素的數(shù)量。

在某些情況下,枚舉會嚴重影響程序性能,比如EF Core下使用IQueryable.Count()就需要訪問數(shù)據(jù)庫獲取全部記錄才能計數(shù)。

因此,更高效地計算序列中的元素數(shù),就是使用TryGetNonEnumeratedCount方法,如果可以快速計數(shù),該方法將返回true并將計數(shù)作為out變量返回。

結(jié)論:

建議你始終使用以下格式代碼,去獲取可枚舉類型的元素總數(shù):

if (!enumerable.TryGetNonEnumeratedCount(out var count))
{
    //使用其他方式獲取元素數(shù)量
}

到此,相信大家對“.NET 6的TryGetNonEnumeratedCount方法怎么用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI