Sınıflar (F#) bağlarında yapın
A do bir sınıf tanımı içinde bağlama nesnesi oluşturulur ya da, bir statik eylemleri gerçekleştirir do bağlama, ne tür önce kullanılır.
[static] do expression
Notlar
A do bağlama ile birlikte veya daha sonra görünür let bağları, ancak önce bir sınıf tanımı içinde üye tanımları. Rağmen do anahtar sözcük için isteğe bağlı do bağları modül düzeyinde için isteğe bağlı değilse do bir sınıf tanımı içinde bağlar.
Her nesnenin herhangi bir Yapım için verilen türü, statik olmayan do bağlar ve statik olmayan let bağları sınıf tanımında göründükleri sırayla çalıştırılır. Birden çok do bağları bir yazıyla meydana gelebilir. Statik olmayan let bağlar ve statik olmayan do bağları birincil kurucunun gövdesini haline gelir. Statik olmayan kodda do birincil yapıcı parametreleri ve değerleri veya içinde tanımlanmış işlevler bindings bölümünü başvuru let bindings bölümünü.
Statik olmayan do bağları, sınıfın üyeleri erişebilir, sınıf tarafından tanımlanan bir kendini tanımlayıcı olduğu sürece bir as class başlıkları ve kendini sınıf tanımlayıcısı ile üyeleri tüm kullanımlarını tam olarak uzun bir anahtar sözcük.
Çünkü let bağlantılarını başlatmak genellikle üyeleri beklendiği gibi davranmasını güvence altına almak gerekli olan, bir sınıfın özel alanları do bağlar genellikle sonra koy let , içindeki kod için bağları do bağlama tam olarak başlatılmamış bir nesneyle yürütebilirsiniz. Kodunuzu başlatılması tamamlanmadan önce üye kullanmaya çalışırsa, bir InvalidOperationException oluşturuldu.
Statik do bağları static üyeler başvuru veya alanları kapsayan, sınıf ancak örnek üyeleri veya alanları değil. Statik do bağları statik sınıf ilk kullanılmadan önce yürütülecek garanti Sınıf başlatıcısı bir parçası haline gelir.
Öznitelikler için dikkate do türlerinde bağlar. Bir öznitelik içinde yürütülen kod için gerekli olup olmadığını bir do bağlama, bunun birincil yapıcısına uygulanması gerekir.
Aşağıdaki kodda, bir statik bir sınıfa sahip do bağlama ve statik olmayan do bağlama. Nesne iki parametre olan bir kurucusu vardır. a ve b, ve iki private alanı içinde tanımlanan let sınıfı için bağlar. İki özellik de tanımlanabilir. Bunların hepsi statik olmayan kapsamında bulunan do bindings bölümünü, tüm bu değerleri yazdırır satırı ile gösterildiği gibi.
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)
Çıktı aşağıdaki gibidir.
Initializing MyType.
Initializing object 1 2 2 4 8 16
Ayrıca bkz.
Başvuru
Sınıflar (F#) bağlarında olanak sağlar