다음을 통해 공유


열거형 저장소는 Int32여야 합니다.

업데이트: 2007년 11월

TypeName

EnumStorageShouldBeInt32

CheckId

CA1028

범주

Microsoft.Design

변경 수준

주요 변경

원인

public 열거형의 내부 형식이 System.Int32가 아닙니다.

규칙 설명

열거형은 서로 관련 있는 명명된 상수 집합을 정의하는 값 형식입니다. 기본적으로 System.Int32 데이터 형식은 상수 값을 저장하는 데 사용됩니다. 이 내부 형식을 변경할 수 있지만 대부분의 시나리오에서 변경할 필요가 없으며 변경하지 않는 것이 좋습니다. Int32보다 작은 데이터 형식을 사용해도 성능이 크게 향상되는 것은 아닙니다. 기본 데이터 형식을 사용할 수 없으면 CLS 규격의 정수 계열 형식인 Byte, Int16, Int32 또는 Int64 중 하나를 사용하여 모든 열거형 값을 CLS 규격 프로그래밍 언어로 나타낼 수 있도록 해야 합니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 크기나 호환성 문제가 없는 경우 Int32를 사용합니다. Int32의 크기가 값을 저장하기에 충분하지 않으면 Int64를 사용합니다. 이전 버전과의 호환성 때문에 더 작은 데이터 형식이 필요할 경우에는 Byte 또는 Int16을 사용하십시오.

경고를 표시하지 않는 경우

이전 버전과의 호환성 문제를 해결하기 위해 필요한 경우에만 이 규칙에서 경고를 표시하지 않도록 설정하십시오. 응용 프로그램에서는 이 규칙을 따르지 않더라도 대개 문제가 발생하지 않습니다. 언어 상호 운용성이 필요한 라이브러리에서는 이 규칙을 따르지 않는 경우 사용자에게 부정적인 영향을 줄 수 있습니다.

규칙 위반 예

설명

다음 예제에서는 권장되는 내부 데이터 형식을 사용하지 않는 두 가지 열거형을 보여 줍니다.

코드

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
   }
}

수정 방법 예

설명

다음 예제에서는 내부 데이터 형식을 public에서 protected로 변경하여 앞의 규칙 위반 문제를 해결합니다.

코드

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
    }
}

관련 규칙

열거형에는 0 값이 있어야 합니다.

열거형을 FlagsAttribute로 표시하십시오.

열거형을 FlagsAttribute로 표시하지 마십시오.

열거형 값의 이름을 'Reserved'로 지정하지 마십시오.

열거형 값에 형식 이름을 접두사로 사용하지 마십시오.

참고 항목

참조

System.Byte

System.Int16

System.Int32

System.Int64