CA1860:避免使用 'Enumerable.Any ()' 擴充方法
屬性 | 值 |
---|---|
規則識別碼 | CA1860 |
職稱 | 避免使用 'Enumerable.Any()' 擴充方法 |
類別 | 效能 |
修正程式是中斷或非中斷 | 不中斷 |
預設在 .NET 8 中啟用 | 建議 |
原因
Enumerable.Any在具有Length
、 Count
或 IsEmpty
屬性的類型上呼叫 。
檔案描述
若要判斷集合類型是否有任何專案,使用 Length
、 Count
或 IsEmpty
(可能的話) 屬性比呼叫 Enumerable.Any 方法更有效率且更清楚。
Any()
,這是擴充方法,會使用語言整合式查詢 (LINQ)。 依賴集合本身的屬性更有效率,而且也會釐清意圖。
注意
此規則類似於 CA1827:當可以使用 Any() 時,請勿使用 Count()/LongCount()。 不過,該規則會套用至 Linq Count()
方法,而此規則則建議使用 Count
屬性。
如何修正違規
將呼叫 Any() 取代為對集合、 Length
Count
或 IsEmpty
屬性的呼叫。
範例
下列代碼段顯示 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
如需詳細資訊,請參閱 如何隱藏程式代碼分析警告。