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.
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.