CA1825: Sıfır uzunluklu dizi ayırmalarından kaçının

Özellik Değer
Kural Kimliği CA1825
Başlık Sıfır uzunluklu dizi ayırmalarından kaçının
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

Elementleri olmayan boş bir Array ayrılır.

Kural açıklaması

Sıfır uzunluklu bir dizinin başlatılması gereksiz bellek ayırmaya neden olur. Bunun yerine Array.Empty yöntemini çağırarak statik olarak ayrılmış boş dizi örneğini kullanın. Bellek ayırma, bu yöntemin tüm çağrılarında paylaşılır.

İhlalleri düzeltme

Bir ihlali düzeltmek için sıfır uzunluklu dizi tahsisini bir Array.Empty çağrısı ile değiştirin. Örneğin, aşağıdaki iki kod parçacığı kuralın ihlalini ve nasıl düzeltileceğini gösterir:

class C
{
    public void M1()
    {
        // Violates rule CA1825.
        var a = new int[0];
    }
}
class C
{
    public void M1()
    {
        // Resolves rule CA1825 violation.
        var a = System.Array.Empty<int>();
    }
}

İpucu

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

CA1825 için kod düzeltmesi - boş dizi kullanma

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

Ek bellek ayırma konusunda endişeniz yoksa bu kuralın ihlalini gizlemeniz güvenlidir.

Not

Aşağıdakilerin tümü geçerliyse bu kuraldan hatalı pozitif uyarılar görebilirsiniz:

  • Visual Studio 2022 sürüm 17.5 veya üzerini .NET SDK'nın daha eski bir sürümüyle ( .NET 6 veya önceki bir sürüm) kullanıyorsunuz.
  • .NET 6 SDK'sından çözümleyicileri veya çözümleyici paketlerinin Microsoft.CodeAnalysis.FxCopAnalyzers gibi eski bir sürümünü kullanıyorsunuz.
  • Öznitelik bağımsız değişkeni olarak, en yaygın şekilde params parametresi olarak sıfır uzunluklu bir dizi kullanıyorsunuz.

Hatalı pozitifler, C# derleyicisindeki büyük bir değişiklikten kaynaklanmaktadır. Hatalı pozitif uyarıların düzeltmesini içeren daha yeni bir çözümleyici kullanmayı düşünün. Microsoft.CodeAnalysis.NetAnalyzers sürüm 7.0.0-preview1.22464.1 veya daha yeni bir sürüme yükseltin veya .NET 7 SDK'sından çözümleyicileri kullanın.

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 CA1825
// The code that's violating the rule is on this line.
#pragma warning restore CA1825

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.CA1825.severity = none

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

Ayrıca bkz.