Sdílet prostřednictvím


Objekt výrazy (F#)

Objektu výraz je výraz, který vytvoří novou instanci typu anonymní dynamicky vytvořený objekt, který je založen na existující základní typ, rozhraní nebo sady rozhraní.

// When typename is a class:
{ new typename [type-params] arguments with
   member-definitions
  [ additional-interface-definitions ]
}
// When typename is not a class:
{ new typename [generic-type-args] with
   member-definitions
  [ additional-interface-definitions ]
}

Poznámky

V předchozích syntaxe typename představuje existující typ třídy, nebo typ rozhraní.type-paramsPopisuje obecný typ volitelné parametry.arguments Jsou používány pouze pro typy tříd, které vyžadují parametry konstruktoru.member-definitions Přepis metody základní třídy nebo implementace abstraktní metody základní třídy nebo rozhraní.

Následující příklad ukazuje několik různých typů výrazů objektu.

// This object expression specifies a System.Object but overrides the
// ToString method.
let obj1 = { new System.Object() with member x.ToString() = "F#" }
printfn "%A" obj1 

// This object expression implements the IFormattable interface.
let Delimiter(delim1 : string, delim2 : string ) = { new System.IFormattable with
                member x.ToString(format : string, provider : System.IFormatProvider) =
                  if format = "D" then delim1 + x.ToString() + delim2
                  else x.ToString()
           }

let obj2 = Delimiter("{","}");

printfn "%A" (System.String.Format("{0:D}", obj2))

// This object expression implements multiple interfaces.
type IFirst =
  abstract F : unit -> unit
  abstract G : unit -> unit

type ISecond =
  inherit IFirst
  abstract H : unit -> unit
  abstract J : unit -> unit

// This object expression implements an interface chain.
let Implementer() = { new ISecond with
                         member this.H() = ()
                         member this.J() = ()
                       interface IFirst with
                         member this.F() = ()
                         member this.G() = ()
                    }

Použití výrazů objektu

Objekt výrazy použít, když chcete zabránit dodatečný kód a režijní náklady potřebné k vytvoření nového, s názvem typu.Pomocí objektu výrazy minimalizovat počet typů vytvořen v programu, můžete snížit počet řádků kódu a zabránit zbytečné rozšíření typů.Namísto vytváření mnoha typů pouze ke zpracování zvláštních situací, můžete použít výraz objekt, který upravuje existující typ nebo poskytuje vhodné implementaci rozhraní pro konkrétní případ.

Viz také

Další zdroje

F# Language Reference