Sdílet prostřednictvím


Výčty (F#)

Vyčíslení, také známé jako výčty,, jsou nedílnou typy, kde jsou přiřazena popisky dílčí hodnoty.Můžete je použít namísto literály provést kód čitelnější a údržba.

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

Poznámky

výčet vypadá podobně jako discriminated unie, který má jednoduché hodnoty, s výjimkou, že lze zadat hodnoty.Hodnoty jsou obvykle celá čísla, která začínají na 0 nebo 1 nebo celá čísla, které představují bitů na jednotlivých pozicích.Pokud výčet představují bitů na jednotlivých pozicích, použít i FlagsAttribute atribut.

Základní typ výčet se určí z literál, který se používá tak, že například můžete použít literály s příponu, například 1u, 2u, a tak dále, pro integer bez znaménka (uint32) typu.

Při odkazu na pojmenované hodnoty musí použijete název samotného typ výčet jako kvalifikátor, enum-name.value1, nikoli pouze value1.Toto chování se liší od discriminated sdružení.Důvodem je, že mají vždy vyčíslení RequireQualifiedAccessatribut.

Následující kód ukazuje prohlášení a použití výčet.

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

Můžete snadno převést vyčíslení základní typ pomocí vhodných operátor, jak je ukázáno v následujícím kódu.

// 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.Výčet typů jsou reprezentovány v.NET rozhraní .NET Framework jako typy, které jsou zděděny z Enum, která zase pochází z ValueType.Jsou typy hodnot, které jsou umístěny v zásobníku nebo vložený objektobsahující a všechny základní typ hodnotu platný hodnotu výčet.Totiž významné při porovnávání na výčet hodnot, je nutné poskytnout vzorek, který zachycuje nepojmenované hodnoty.

enum funkce F# knihovna lze použít ke generování hodnota výčet i jinou hodnotu než jeden z předdefinovaných, pojmenované hodnoty. Použití enum funkce takto.

let col2 = enum<Color>(3)

Výchozí enum funkce pracuje s typem int32. Proto jej nelze použít výčet typů, které mají ostatní základní typy.Místo toho použijte následující.

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

Viz také

Koncepty

Přetypování a převody (F#)

Další zdroje

Referenční dokumentace jazyka F#