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.
CA1507: Dize yerine kullanın
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA1507 |
| Başlık | Dize yerine kullan nameof |
| Kategori | Bakım Kolaylığı |
| 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
Bir string yöntemin bağımsız değişkeni olarak, içeren yöntemin parametresinin adıyla veya içeren türün bir özelliğinin adıyla eşleşen değişmez değer veya sabit kullanılır.
Kural açıklaması
Kural CA1507, bir yönteme veya oluşturucuya bağımsız değişken olarak sabit string değerin kullanılmasını işaretler ve burada bakım kolaylığı ekleyen bir "nameof" ifadesi (NameOf; Visual Basic'de) kullanılması daha uygun olur. Aşağıdaki koşulların tümü karşılanırsa kural tetiklenir:
Bağımsız değişken değişmez
stringdeğer veya sabittir.Bağımsız değişken, çağırılan yöntemin ya da oluşturucunun
stringtüründeki parametresine karşılık gelir (yani, çağrı yerinde bir dönüştürme yapılmaz).Şunlardan biri:
parametresinin bildirilen adıdır
paramNameve değişmez değeristring, yöntemin veya oluşturucunun çağrıldığı yöntemin, lambdanın veya yerel işlevin parametresinin adıyla eşleşir.Parametrenin bildirilen adı
propertyNamevestringsabitinin değişmez değeri, yöntem veya oluşturucunun çağrıldığı türdeki bir özelliğin adıyla eşleşir.
CA1507 kuralı, gelecekte parametrenin yeniden adlandırılma ihtimali olduğunda, ancak string sabit değerin yanlışlıkla yeniden adlandırılmaması gibi durumlarda kodun sürdürülebilirliğini geliştirir.
nameof kullanılarak, parametre yeniden yapılandırma işlemiyle yeniden adlandırıldığında simge yeniden adlandırılır. Buna ek olarak, parametrenin adındaki yazım hatalarını derleyici yakalar.
İhlalleri düzeltme
İhlali düzeltmek için string değişmez değerini Ad (NameOf Visual Basic'te) ifadesiyle değiştirin. Örneğin, aşağıdaki iki kod parçacığı kuralın ihlalini ve nasıl düzeltileceğini gösterir:
public Book(string title)
{
// Violates rule CA1507
Title = title ?? throw new ArgumentNullException("title", "All books must have a title.");
}
public Book(string title)
{
// Resolves rule CA1507 violation
Title = title ?? throw new ArgumentNullException(nameof(title), "All books must have a title.");
}
İpucu
Visual Studio'da bu kural için bir kod düzeltmesi kullanılabilir. Bunu kullanmak için imleci değişmez değere string getirin ve Ctrl+. (nokta) tuşlarına basın. Sunulan seçenekler listesinden Sembol adlarını ifade etmek için nameof kullan'ı seçin.
Uyarıların ne zaman bastırılması gerekiyor?
Kodunuzun sürdürülebilirliği konusunda endişeleriniz 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 CA1507
// The code that's violating the rule is on this line.
#pragma warning restore CA1507
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.CA1507.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.