Udostępnij za pośrednictwem


Wyliczenia (F#)

Wyliczenia, znany również jako wyliczenia,, są integralną typów, których etykiety są przypisane do podzbioru wartości.Można użyć je zamiast literały Aby bardziej czytelnym i powstawać kodu.

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

Uwagi

wyliczanie wygląda podobnie jak dyskryminowanych Unii, który ma prosty wartości, z wyjątkiem, że można określić wartości.Wartości są zwykle liczb całkowitych, które rozpoczynają się od 0 lub 1 lub liczb całkowitych, które reprezentują pozycjach.Jeśli wyliczanie jest przeznaczony do reprezentowania pozycjach, należy również użyć FlagsAttribute atrybut.

Typ podstawowy wyliczanie zależy od literał, który jest używany tak, aby na przykład pomocą literałów sufiks, takich jak 1u, 2u, i tak dalej niepodpisane liczba całkowita (uint32) typu.

Odwołanie do nazwanego wartości należy użyć nazwy typu wyliczanie sam jako kwalifikator, oznacza to, że enum-name.value1, nie tylko value1.To zachowanie różni się od dyskryminowanych związków.Jest to ponieważ wyliczenia zawsze mają RequireQualifiedAccessatrybut.

Poniższy kod przedstawia deklarację i stosowanie wyliczanie.

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

Można łatwo konwertować wyliczenia podstawowego typu za pomocą odpowiednich operator, jak pokazano w poniższym kodzie.

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

Enumerated types can have one of the following underlying types: sbyte, byte, int16, uint16, int32, uint32, int64, uint16, uint64, and char.Wyliczanie typy są reprezentowane w.NET Framework jako typy, które są dziedziczone z Enum, który z kolei jest dziedziczona z ValueType.Dlatego są one typy wartości, które znajdują się na stos lub w tekście w zawierającego obiekti dowolną wartość typ podstawowy jest prawidłowy wartością wyliczanie.Jest to znaczące gdy wzorzec dopasowania na wyliczanie wartości, ponieważ należy podać deseń, że połowy wartości bez nazwy.

enum funkcja F# biblioteka może służyć do generowania wartość wyliczanie , nawet na wartość inną niż jedną z wstępnie zdefiniowanych, nazwane wartości. Za pomocą enum funkcja w następujący sposób.

let col2 = enum<Color>(3)

Domyślnie enum funkcja działa z typem int32. W związku z tym nie można używać z wyliczanie .Zamiast tego należy użyć.

type uColor =
   | Red = 0u
   | Green = 1u
   | Blue = 2u
let col3 = Microsoft.FSharp.Core.LanguagePrimitives.EnumOfValue<uint32, uColor>(2u)

Zobacz też

Koncepcje

Rzutowanie i konwersje (F#)

Inne zasoby

Materiały referencyjne dotyczące języka F#