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
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 8'de varsayılan olarak etkin Öneri olarak

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 uygulayan ancak olmayan IReadOnlyList<T>IList<T>koleksiyon türlerini analiz eder.

Bu kural, bu koleksiyon türlerinde aşağıdaki yöntemlere çağrıları bayrakla 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);
    }
}

Bahşiş

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

Code fix for CA1826 - Use indexer

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.

Çözümlemek için kod yapılandırma

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ı ve Enumerable.LastOrDefault yöntemlerini analizden dışlamak Enumerable.FirstOrDefault için 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.