Sdílet prostřednictvím


Vazby do ve třídách (F#)

A do vazba v definici třídy provede akce, když se objekt nebo pro statické do vazbu, když nejprve používá typ.

[static] do expression

Poznámky

A do vazby se zobrazí spolu s nebo po let vazeb, ale před členské definic v definici třídy.Přestože do klíčové slovo je volitelná pro do vazby na úrovni modulu není volitelný pro do vazby v definici třídy.

Konstrukce každého objektu kterékoli dané nestatický typ do vazby a nestatický let vazby jsou spouštěny v pořadí, v jakém jsou uvedeny v definici třídy.Více do vazby může dojít v jednom typu.Nestatickému let vazby a které nejsou statické do vazby se stanou těla konstruktoru primární.Kód v jiných statické do oddílu vazby lze odkazovat na primární konstruktor parametry a hodnoty nebo funkce, které jsou definovány v let oddílu vazby.

Nestatický do vazby přístup členové třídy třída má vlastní identifikátor, který je definován jako as klíčové slovo ve třídě nadpisy a pokud jsou všechna použití těchto členů kvalifikovaný s vlastní identifikátor třídy.

Protože let vazby inicializovat pole private třídy, která je často nutné zaručit, že členové chovat dle očekávání, do vazby jsou obvykle uváděny po let vazby, který v kódu do vazby lze spustit s plně inicializovat objekt.Pokud váš kód se pokusí použít člen před dokončením inicializace, je aktivována InvalidOperationException.

Statické do vazeb lze odkazovat na statické členy nebo orámování polí třídy, ale není instancí členů nebo polí.Statické do vazby se stanou součástí statické inicializátor třída je zaručena provést před prvním použití třídy.

Atributy jsou ignorovány u do typy vazby.Pokud je atribut pro kód, který se spouští v do vazba, musí být použita primární konstruktoru.

Následující kód třída obsahuje statické do vazby a které nejsou statické do vazby.Objekt má konstruktor, který má dva parametry, a a b, a dvě pole private jsou definovány v let vazby pro třídu.Také jsou definovány dvě vlastnosti.Všechny tyto jsou v rozsahu, ve které nejsou statické do oddílu vazby, jak je řádek, který vytiskne všechny hodnoty.

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)

Výstup je takto.

Initializing MyType.
Initializing object 1 2 2 4 8 16

Viz také

Referenční dokumentace

Třídy (F#)

Vazby let ve třídách (F#)

do – vazby (F#)

Koncepty

Konstruktory (F#)

Další zdroje

Členy (F#)