CA1028: Numaralandırma depolaması Int32 olmalıdır
TypeName |
EnumStorageShouldBeInt32 |
CheckId |
CA1028 |
Kategori |
Microsoft.Design |
Değişiklik kesiliyor |
Bölme |
Neden
Ortak bir numaralandırma türlerinin değil Int32.
Kural Tanımı
Bir numaralandýrma ilişkili adlandırılmış sabitler kümesini tanımlayan bir değer türüdür.Varsayılan olarak, Int32 veri türü sabit değerleri depolamak için kullanılır.Temel alınan tür değiştirebilirsiniz olsa da, çoğu senaryolar için gerekli veya önerilen değildir.Küçük bir veri türünü kullanarak hiçbir önemli performans kazanç sağlanır Not Int32.Varsayılan veri türü kullanamazsanız, bir ortak dil sistemi (cls), kullanmanız gereken-uyumlu ayrılmaz türleri Byte, Int16, Int32, veya Int64 tüm değerleri numaralandırma cls uyumlu programlama dillerinde gösterilebilen emin olmak için.
İhlalleri düzeltmek nasıl
Bu kuralı ihlal sürece boyutu veya uyumluluk sorunları gidermek için kullanın Int32.Durumlar için burada Int32 değerlerini kullanmak için yeterince büyük değil Int64.Geriye dönük uyumluluk daha küçük bir veri türü gerektiriyorsa, kullanmak Byte veya Int16.
Uyarıları ne zaman
Yalnızca geriye dönük uyumluluk sorunları gerekliyse bu kuraldan bir uyarı göstermez.Uygulamalarda uymamak bu kural genellikle sorunları neden olmaz.Language Specification'a gerekli olduğu kitaplıklarda, kullanıcılarınız bu kuralla uymamak olumsuz etkileyebilir.
Bir ihlali örneği
Description
Aşağıdaki örnek, önerilen temel veri türü kullanmayan iki listeleme gösterir.
Kod
Imports System
Namespace Samples
<Flags()> _
Public Enum Days As UInteger
None = 0
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
Friday = 16
All = Monday Or Tuesday Or Wednesday Or Thursday Or Friday
End Enum
Public Enum Color As SByte
None = 0
Red = 1
Orange = 3
Yellow = 4
End Enum
End Namespace
using System;
namespace DesignLibrary
{
[Flags]
public enum Days : uint
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
All = Monday| Tuesday | Wednesday | Thursday | Friday
}
public enum Color :sbyte
{
None = 0,
Red = 1,
Orange = 3,
Yellow = 4
}
}
Düzeltme nasıl örnek
Description
Aşağıdaki örnek önceki ihlali alttaki veri türünü değiştirerek giderir Int32.
Kod
Imports System
Namespace Samples
<Flags()> _
Public Enum Days As Integer
None = 0
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
Friday = 16
All = Monday Or Tuesday Or Wednesday Or Thursday Or Friday
End Enum
Public Enum Color As Integer
None = 0
Red = 1
Orange = 3
Yellow = 4
End Enum
End Namespace
using System;
namespace Samples
{
[Flags]
public enum Days : int
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
All = Monday| Tuesday | Wednesday | Thursday | Friday
}
public enum Color : int
{
None = 0,
Red = 1,
Orange = 3,
Yellow = 4
}
}
İlgili kuralları
CA1008: Numaralandırmalar sıfır değerine sahip olmalıdır
CA1027: Numaralandırmaları FlagsAttribute ile işaretle
CA2217: Numaralandırmaları FlagsAttribute ile işaretlemeyin
CA1700: Numaralandırma değerlerini 'Ayrılmış' olarak adlandırmayın
CA1712: Numaralandırma değerleri için tür adıyla önek kullanmayın