CA1860:避免使用 'Enumerable.Any ()' 擴充方法

屬性
規則識別碼 CA1860
標題 避免使用 'Enumerable.Any()' 擴充方法
類別 效能
修正程式是中斷或非中斷 不中斷
預設在 .NET 8 中啟用 建議

原因

Enumerable.Any在具有 LengthCountIsEmpty 屬性 的類型上呼叫 。

檔案描述

若要判斷集合類型是否有任何專案,使用 LengthCountIsEmpty (可能的話) 屬性比呼叫 Enumerable.Any 方法更有效率且更清楚。

Any(),這是擴充方法,會使用語言整合式查詢 (LINQ)。 依賴集合本身的屬性更有效率,而且也會厘清意圖。

注意

此規則類似于 CA1827:當可以使用 Any() 時,請勿使用 Count()/LongCount()。 不過,該規則會套用至 Linq Count() 方法 ,而此規則則建議使用 Count 屬性

如何修正違規

將呼叫 Any() 取代為對集合 、 LengthCountIsEmpty 屬性的呼叫

範例

下列程式碼片段顯示 CA1860 的違規:

bool HasElements(string[] strings)
{
    return strings.Any();
}
Function HasElements(strings As String()) As Boolean
    Return strings.Any()
End Function

下列程式碼片段會修正違規:

bool HasElements(string[] strings)
{
    return strings.Length > 0;
}
Function HasElements(strings As String()) As Boolean
    Return strings.Length > 0
End Function

隱藏警告的時機

如果效能不相關,則隱藏此警告是安全的。

隱藏警告

如果您只想要隱藏單一違規,請將預處理器指示詞新增至原始程式檔以停用,然後重新啟用規則。

#pragma warning disable CA1860
// The code that's violating the rule is on this line.
#pragma warning restore CA1860

若要停用檔案、資料夾或專案的規則,請在組態檔 中將其嚴重性設定為 。 none

[*.{cs,vb}]
dotnet_diagnostic.CA1860.severity = none

如需詳細資訊,請參閱 如何隱藏程式碼分析警告