Aracılığıyla paylaş


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

Ayrıca bkz.

Başvuru

Byte

Int16

Int32

Int64