do — Powiązania w klasach (F#)
A do wiązania w definicji klasy wykonuje akcje, gdy obiekt jest skonstruowany lub dla statycznego do wiążące, gdy typ jest najpierw używany.
[static] do expression
Uwagi
A do powiązanie pojawiało się wraz z, lub po let powiązania, ale przed Członkowskie definicje w definicji klasy.Chociaż do słowo kluczowe jest fakultatywne dla do wiązania na poziomie modułu nie jest fakultatywne dla do wiązania w definicji klasy.
Budowa każdego obiektu dowolnego biorąc pod uwagę typ niestatyczny do powiązania i -statycznej let powiązania są wykonywane w kolejności, w jakiej pojawiają się w definicji klasy.Wiele do wiązania może wystąpić w jednym typie.Niestatyczny let powiązania i niestatyczny do wiązania stają się organ podstawowego konstruktora.Kod w niestatyczny do sekcji wiązania można odwoływać się parametry konstruktora podstawowego oraz wartości lub funkcje, które są zdefiniowane w let sekcji wiązania.
Niestatyczne do wiązania można uzyskać dostęp do członków tej klasy, tak długo, jak klasa ma self identyfikator, który jest zdefiniowany przez as słowa kluczowego w klasie nagłówek oraz tak długo, jak wszystkich zastosowań tych członków są poprzedzone self identyfikatora klasy.
Ponieważ let wiązania zainicjować prywatne pola Klasa, która często jest niezbędne do zagwarantowania, że Członkowie zachowują się zgodnie z oczekiwaniami, do powiązania są zwykle wprowadzane po let wiązania tak, że kod w do mogą być wykonywane przez powiązanie z obiektem w pełni zainicjowany.Jeśli kod odwołuje się do członka przed zakończeniem inicjowania, wywoływane jest InvalidOperationException.
Statyczne do wiązania można odwoływać się do statycznej członków lub pól otaczającej klasy, ale nie instancji członków lub pól.Statyczne do wiązania stają się częścią statycznego inicjatora klasy, który na pewno zostanie wykonany przed pierwszym użyciu klasy.
Atrybuty są ignorowane dla do wiązania w typach.Jeśli atrybut jest wymagany kod, który jest wykonywany w do wiążące, to muszą być stosowane do podstawowego konstruktora.
W poniższym kodzie klasy ma statycznej do wiążące i nie static do powiązania.Obiekt ma konstruktora, który ma dwa parametry, a i b, i dwa pola private są zdefiniowane w let powiązania dla tej klasy.Definiuje również dwie właściwości.Wszystkie te są w zasięgu niestatyczny do sekcji wiązania, przedstawionym przez wiersz, który drukuje tych wartości.
open System
type MyType(a:int, b:int) as this =
inherit Object()
let x = 2*a
let y = 2*b
do printfn "Initializing object %d %d %d %d %d %d"
a b x y (this.Prop1) (this.Prop2)
static do printfn "Initializing MyType."
member this.Prop1 = 4*x
member this.Prop2 = 4*y
override this.ToString() = System.String.Format("{0} {1}", this.Prop1, this.Prop2)
let obj1 = new MyType(1, 2)
Wprowadza dane wyjściowe.
Initializing MyType.
Initializing object 1 2 2 4 8 16