Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Ö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.
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
paramsparametresi 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.