Listelemeler

Numaralandırmalar olarak da bilinen numaralandırmalar, etiketlerin değerlerin bir alt kümesine atandığı tam sayı türleridir. Kodu daha okunabilir ve sürdürülebilir hale getirmek için bunları değişmez değerler yerine kullanabilirsiniz.

Sözdizimi

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

Açıklamalar

Numaralandırma, değerlerin belirtilmesi dışında basit değerleri olan ayrımcı bir birleşime çok benzer. Değerler genellikle 0 veya 1 ile başlayan tamsayılar ya da bit konumlarını temsil eden tamsayılardır. Sabit listesi bit konumlarını temsil etmesi amaçlanıyorsa Flags özniteliğini de kullanmanız gerekir.

Sabit listesi temel alınan türü, kullanılan değişmez değerden belirlenir; böylece, örneğin, imzasız bir tamsayı (uint32) türü için , 2uve gibi 1ubir sonek içeren değişmez değerleri kullanabilirsiniz.

Adlandırılmış değerlere başvurduğunuz zaman, numaralandırma türünün adını yalnızca değil, bir niteleyici enum-name.value1value1olarak kullanmanız gerekir. Bu davranış, ayrımcı birleşimlerden farklıdır. Bunun nedeni numaralandırmaların her zaman RequireQualifiedAccess özniteliğine sahip olmasıdır.

Aşağıdaki kod, bir numaralandırma bildirimini ve kullanımını gösterir.

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

Aşağıdaki kodda gösterildiği gibi uygun işleci kullanarak numaralandırmaları temel alınan türe kolayca dönüştürebilirsiniz.

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

Numaralandırılmış türler aşağıdaki temel türlerden birine sahip olabilir: , , , , , int32, uint32, int64, uint64ve char. uint16int16bytesbyte Numaralandırma türleri .NET Framework'te öğesinden System.Enumdevralınan türler olarak temsil edilir ve bu da öğesinden System.ValueTypedevralınır. Bu nedenle, bunlar içeren nesnenin yığınında veya satır içinde bulunan değer türleridir ve temel alınan türün herhangi bir değeri numaralandırmanın geçerli bir değeridir. Sabit listesi değerlerinde desen eşleştirme sırasında bu önemlidir, çünkü adsız değerleri yakalayan bir desen sağlamanız gerekir.

enum F# kitaplığındaki işlev, önceden tanımlanmış adlandırılmış değerlerden biri dışında bir değer bile olmak üzere bir numaralandırma değeri oluşturmak için kullanılabilir. işlevini aşağıdaki gibi kullanırsınız enum .

let col2 = enum<Color> (3)

Varsayılan enum işlev türüyle int32çalışır. Bu nedenle, diğer temel türleri olan numaralandırma türleri ile kullanılamaz. Bunun yerine aşağıdakileri kullanın.

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

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

Ayrıca, sabit listeleri için durumlar her zaman olarak publicyayılır. Bu, C# ve .NET platformunun geri kalanıyla uyumlu hale getirmeleri için yapılır.

Ayrıca bkz.