다음을 통해 공유


열거 목록

열거형( 열거형이라고도 함)은 값의 하위 집합에 레이블이 할당되는 정수 형식입니다. 리터럴 대신에 사용하여 코드를 더 읽기 쉽고 유지 보수가 용이하게 만들 수 있습니다.

문법

type enum-name =
| value1 = integer-literal1
| value2 = integer-literal2
...

비고

열거형은 값을 지정할 수 있다는 점을 제외하고 단순 값이 있는 구분된 공용 구조체와 비슷합니다. 값은 일반적으로 0 또는 1에서 시작하는 정수 또는 비트 위치를 나타내는 정수입니다. 열거형이 비트 위치를 나타내기 위한 경우 Flags 특성도 사용해야 합니다.

열거형의 기본 형식은 사용된 리터럴에 따라 결정됩니다. 예를 들어 1u2u과 같은 접미사가 있는 리터럴을 부호 없는 정수 형식(uint32)으로 사용할 수 있습니다.

명명된 값을 참조하는 경우 열거형 형식 자체의 이름을 한정자로 사용해야 합니다. 즉, enum-name.value1단지 value1. 이 동작은 차별된 노조의 동작과 다릅니다. 열거형에는 항상 RequireQualifiedAccess 특성이 있기 때문입니다.

다음 코드에서는 열거형의 선언 및 사용을 보여 줌

// Declaration of an enumeration.
type Color =
    | Red = 0
    | Green = 1
    | Blue = 2
// Use of an enumeration.
let col1: Color = Color.Red

다음 코드와 같이 적절한 연산자를 사용하여 열거형을 기본 형식으로 쉽게 변환할 수 있습니다.

// Conversion to an integral type.
let n = int col1

열거형 형식은 다음 기본 형식 sbyte중 하나를 가질 수 있습니다. , ,byteint16, uint16, int32uint32, int64uint64및 .char 열거형 형식은 .NET Framework에서 상속된 System.Enum 형식으로 표시되며, 이 형식은 다시 System.ValueType에서 상속된 것입니다. 따라서 포함하는 개체의 스택 또는 인라인에 있는 값 형식이며 기본 형식의 모든 값은 열거형의 유효한 값입니다. 열거형 값에 대한 패턴 매칭 시, 명명되지 않은 값을 포착할 수 있는 패턴을 제공해야 하므로 이는 중요합니다.

F# 라이브러리의 함수를 enum 사용하여 미리 정의된 명명된 값 중 하나 이외의 값도 열거형 값을 생성할 수 있습니다. 함수는 enum 다음과 같이 사용합니다.

let col2 = enum<Color> (3)

기본 enum 함수는 형식 int32에서 작동합니다. 따라서 다른 기본 형식이 있는 열거형 형식에는 사용할 수 없습니다. 대신 다음을 사용합니다.

type uColor =
    | Red = 0u
    | Green = 1u
    | Blue = 2u

let col3 = Microsoft.FSharp.Core.LanguagePrimitives.EnumOfValue<uint32, uColor>(2u)

또한 열거형의 경우는 항상 public으로 내보내집니다. 따라서 C# 및 나머지 .NET 플랫폼과 일치합니다.

정의된 열거형 사례에 대해서만 전체 일치 를 사용하도록 설정하려면 지시문을 #nowarn "104"사용하여 경고 FS0104를 표시하지 않을 수 있습니다. 이렇게 하면 컴파일러가 패턴 매칭 중에 선언된 열거형 값만을 유효한 값으로 취급할 수 있어, catch-all 처리를 할 필요가 없게 됩니다. 이는 모든 값이 확실히 다루어질 때 유용합니다.

예를 들어 직접 또는 Enums may take values outside known cases.의 결과로 열거형에 임의의 기본 값을 할당할 수 있으므로 경고 FS0104()가 존재합니다.

참고하십시오