Aracılığıyla paylaş


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

Neden

Öğesi olmayan boş Array bir öğe ayrılır.

Kural açıklaması

Sıfır uzunluklu bir dizinin başlatılması gereksiz bellek ayırmaya neden olur. Bunun yerine yöntemini çağırarak statik olarak ayrılmış boş dizi örneğini Array.Empty 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 ayırmasını çağrısıyla Array.Emptydeğ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 ayırmasının üzerine getirin ve Ctrl+ tuşuna (nokta) 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 olarak parametre olarak sıfır uzunluklu bir params dizi kullanıyorsunuz.

Hatalı pozitifler, C# derleyicisindeki hataya neden olan bir değişiklik nedeniyledir. 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 none olarak ayarlayın.

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

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

Ayrıca bkz.