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 | CA1069 |
| Başlık | Numaralandırmalar yinelenen değerlere sahip olmamalıdır |
| Kategori | Tasarım |
| Düzeltme bozucu ya da bozmayan olabilir | Son Dakika |
| .NET 10'da varsayılan olarak etkin | Öneri olarak |
| Geçerli diller | C# ve Visual Basic |
Neden
Bir enum, aynı sabit değere açıkça atanmış birden çok üyeye sahiptir.
Kural açıklaması
Her enum üyesi, ya kendine özgü bir sabit değere sahip olmalıdır ya da değeri paylaşma niyetini açıkça belirtmek için enumdaki önceki bir üyeye açıkça atanmalıdır. Örneğin:
enum E
{
Field1 = 1,
AnotherNameForField1 = Field1, // This is fine
Field2 = 2,
Field3 = 2, // CA1069: This is not fine. Either assign a different constant value or 'Field2' to indicate explicit intent of sharing value.
}
Bu kural, aşağıdaki senaryolardan gelen işlevsel hataları yakalamaya yardımcı olur:
- Birden çok üye için kullanıcının yanlışlıkla aynı sabit değeri yazmasından kaynaklanan yazma hataları.
- Kullanıcının var olan bir üye tanımını kopyaladığı, ardından üyeyi yeniden adlandırdığı ancak değeri değiştirmeyi unuttuğu kopyalama yapıştırma hataları.
- Birden çok daldan, farklı bir adla ancak farklı dallarda aynı değerle yeni bir üyenin eklendiği birleştirme çözümlemesi.
İhlalleri düzeltme
Bir ihlali düzeltmek için, ya yeni bir benzersiz sabit değer atayın ya da aynı değeri paylaşma niyetini açıkça belirtmek için enum yapısında önceki bir üyeye atayın. Örneğin, aşağıdaki kod parçacığı kuralın ihlalini ve ihlali düzeltmenin birkaç yolunu gösterir:
enum E
{
Field1 = 1,
AnotherNameForField1 = Field1, // This is fine
Field2 = 2,
Field3 = 2, // CA1069: This is not fine. Either assign a different constant value or 'Field2' to indicate explicit intent of sharing value.
}
enum E
{
Field1 = 1,
AnotherNameForField1 = Field1, // This is fine
Field2 = 2,
Field3 = 3, // This is now fine
}
enum E
{
Field1 = 1,
AnotherNameForField1 = Field1, // This is fine
Field2 = 2,
Field3 = Field2, // This is also fine
}
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuralın ihlallerini bastırmayın.