FS0067: Ez a típusteszt vagy a lefedés mindig megmarad

Ez az üzenet akkor jelenik meg, ha olyan típustesztet (:?) vagy downcastot (:?>) próbál végrehajtani, amely mindig sikeres lesz az érintett típusok alapján, így a művelet szükségtelen lesz.

Redundáns típusteszt:

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

let dog = Dog()

if dog :? Dog then
    dog.Bark()

Redundáns 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

A fenti két példa miatt a fordító a következő üzenetet jeleníti meg:

FS0067: This type test or downcast will always hold

Az operátorok :? használata és :?> használata előnyösebb, ha a következőkkel dolgozik:

  • Alaposztályok, ha a futtatókörnyezet típusa eltérő lehet.
  • Típus- obj vagy illesztőtípusok értékei.