Udostępnij za pośrednictwem


Wyrażenia obiektów (F#)

Wyrażenie obiektu jest wyrażenie, które tworzy nowe wystąpienie typu obiektu dynamicznie utworzony, anonimowe opiera się na istniejących typu podstawowego, interfejsu lub zestawu interfejsów.

// 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 ]
}

Uwagi

W poprzednich składni typename reprezentuje typ klasy istniejącej lub typ interfejsu.type-paramsw tym artykule opisano parametry opcjonalne typu rodzajowego.arguments Są używane tylko dla typów klasy, które są wymagane parametry konstruktora.member-definitions Przesłonięcia metod klasy podstawowej lub implementacje metody abstrakcyjne klasy podstawowej lub interfejsu.

Poniższy przykład ilustruje kilka różnych typów wyrażeń obiektu.

// 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() = ()
                    }

Za pomocą wyrażeń obiektu

Za pomocą wyrażeń obiektu, gdy użytkownik chce uniknąć dodatkowego kodu i obciążenie, które jest wymagane do utworzenia nowego, o nazwie typu.Użycie wyrażenia obiektu aby zminimalizować liczbę typów utworzone w programie można zmniejszyć liczbę linii kodu i zapobieżenia niepotrzebnego mnożenia typów.Zamiast tworzyć wiele typów tylko do obsługi określonych sytuacjach, można użyć wyrażenia obiektu, która dostosowuje istniejącego typu lub przewiduje odpowiednie implementacji interfejsu pod ręką w konkretnym przypadku.

Zobacz też

Inne zasoby

Materiały referencyjne dotyczące języka F#