CA1826: Linq Enumerable yöntemi yerine özelliği kullanın

Özellik Değer
Kural Kimliği CA1826
Başlık Linq Numaralandırma metodu yerine property kullan
Kategori Performans
Düzeltme bozucu ya da bozmayan olabilir Kesintisiz
.NET 10'da varsayılan olarak etkin Öneri olarak
Geçerli diller C# ve Visual Basic

Neden

Enumerable LINQ yöntemi, eşdeğer, daha verimli bir özelliği destekleyen bir tür üzerinde kullanılmıştır.

Kural açıklaması

Bu kural, LINQ yönteminin aynı verileri getirmek için eşdeğer ancak daha verimli özelliklere sahip tür koleksiyonlarını çağırdığını gösterir Enumerable .

Bu kural, IReadOnlyList<T> uygulayıp IList<T> uygulamayan koleksiyon türlerini analiz eder.

Bu kural, bu koleksiyon türlerindeki aşağıdaki yöntemlere yapılan çağrıları işaretler.

Çözümlenen koleksiyon türleri ve yöntemleri gelecekte daha fazla vakayı kapsayacak şekilde uzatılabilir.

İhlalleri düzeltme

Bir ihlali düzeltmek için yöntem çağrısını Enumerable özellik erişimiyle değiştirin. Örneğin, aşağıdaki iki kod parçacığı kuralın ihlalini ve nasıl düzeltileceğini gösterir:

using System;
using System.Collections.Generic;
using System.Linq;

class C
{
    public void M(IReadOnlyList<string> list)
    {
        Console.Write(list.First());
        Console.Write(list.Last());
        Console.Write(list.Count());
    }
}
using System;
using System.Collections.Generic;

class C
{
    public void M(IReadOnlyList<string> list)
    {
        Console.Write(list[0]);
        Console.Write(list[list.Count - 1]);
        Console.Write(list.Count);
    }
}

İpucu

Visual Studio'da bu kural için bir kod düzeltmesi kullanılabilir. Bunu kullanmak için imleci ihlalin üzerine getirin ve Ctrl+. (nokta) tuşuna basın. Sunulan seçenekler listesinden Dizin oluşturucu kullan'ı seçin.

CA1826 için kod düzeltmesi - Dizin oluşturucu kullanma

Uyarıların ne zaman bastırılması gerekiyor?

Belirli Enumerable yöntem çağrılarının performans etkisi konusunda endişeniz yoksa, bu kuralın ihlalini gizlemeniz güvenlidir.

Uyarıyı gizleme

Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.

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

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.

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

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.

Kod çözümleme için konfigüre et

Bu kuralın kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırmak için aşağıdaki seçeneği kullanın.

FirstOrDefault ve LastOrDefault yöntemlerini dışla

Bu kuralı Enumerable.FirstOrDefault ve Enumerable.LastOrDefault yöntemlerini analizden dışlayacak şekilde yapılandırabilirsiniz. Okunabilirlik önemliyse bu yöntemleri dışlayabilirsiniz, çünkü bunları değiştirmek için yazacağınız kod kolayca okunamaz. Bu yöntemleri dışlamak için projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyin:

dotnet_code_quality.CA1826.exclude_ordefault_methods = true

Ayrıca bkz.