RequireQualifiedAccess

使用 RequireQualifiedAccess 屬性,union case 必須被稱為 MyUnion.MyCase 而不僅僅是 MyCase。這可以防止封閉的名稱空間或模組中的名稱衝突:

type [<RequireQualifiedAccess>] Requirements =
    None | Single | All

// Uses the DU with qualified access
let noRequirements = Requirements.None

// Here, None still refers to the standard F# option case
let getNothing () = None

// Compiler error unless All has been defined elsewhere
let invalid = All

例如,如果 System 已經開啟,則 Single 指的是 System.Single。與聯合案件 Requirements.Single 沒有衝突。