FS0067: Dit type test of downcast zal altijd bevatten

Dit bericht wordt weergegeven wanneer u probeert een typetest (:?) of downcast (:?>) uit te voeren die altijd zal slagen op basis van de betrokken typen, waardoor de bewerking niet nodig is.

Redundante typetest:

type Dog() =
    member this.Bark() = printfn "Woof!"

let dog = Dog()

if dog :? Dog then
    dog.Bark()

Redundante downcast:

type Cat(name: string) =
    member this.Name = name

let cat = Cat("Kitten")

let sameCat = cat :?> Cat

printfn "It's still a %s" sameCat.Name

De twee bovenstaande voorbeelden zorgen ervoor dat de compiler het volgende bericht weergeeft:

FS0067: This type test or downcast will always hold

Het gebruik van :? en :?> operators verdient de voorkeur bij het werken met:

  • Basisklassen wanneer het runtimetype kan verschillen.
  • Waarden van het type obj of de interfacestypen.