Bagikan melalui


Pengikatan do di Kelas

Pengikatan do dalam definisi kelas melakukan tindakan saat objek dibangun atau saat jenis pertama kali digunakan pada pengikatan statis do.

Sintaks

[static] do expression

Keterangan

Pengikatan do muncul bersama atau setelah pengikatan let, tetapi sebelum definisi anggota dalam definisi kelas. Meskipun kata kunci do bersifat opsional untuk pengikatan do di tingkat modul, kata kunci tersebut tidak opsional untuk pengikatan do dalam definisi kelas.

Untuk konstruksi setiap objek dari jenis tertentu, pengikatan non-statis do dan pengikatan non-statis let dijalankan dalam urutan munculnya dalam definisi kelas. Beberapa pengikatan do dapat terjadi dalam satu jenis. Pengikatan non-statis let dan pengikatan non-statis do menjadi isi konstruktor utama. Kode di bagian pengikatan non-statis do dapat mereferensikan parameter konstruktor utama dan nilai atau fungsi apa pun yang ditentukan di bagian pengikatan let.

Pengikatan non-statis do dapat mengakses anggota kelas selama kelas memiliki pengidentifikasi diri yang didefinisikan oleh kata kunci as di judul kelas, dan selama semua penggunaan anggota tersebut memenuhi syarat dengan pengidentifikasi mandiri untuk kelas tersebut.

Karena pengikatan let menginisialisasi bidang privat kelas, yang mana sering diperlukan untuk menjamin bahwa anggota berperilaku seperti yang diharapkan, pengikatan do biasanya dimasukkan setelah pengikatan let sehingga kode dalam pengikatan do dapat dijalankan dengan objek yang sepenuhnya diinisialisasi. Jika kode Anda mencoba menggunakan anggota sebelum inisialisasi selesai, InvalidOperationException akan dinaikkan.

Pengikatan statis do dapat mereferensikan anggota statis atau bidang kelas penutup tetapi bukan anggota atau bidang instans. Pengikatan statis do adalah bagian dari penginisialisasi statis untuk kelas, yang dijamin akan dijalankan sebelum jenis tersebut pertama kali digunakan.

Atribut diabaikan untuk pengikatan do dalam jenis. Jika atribut diperlukan untuk kode yang dijalankan dalam pengikatan do, atribut harus diterapkan ke konstruktor utama.

Dalam kode berikut, kelas memiliki pengikatan statis do dan pengikatan non-statis do. Objek memiliki konstruktor yang memiliki dua parameter, a dan b, dan dua bidang privat ditentukan dalam pengikatan let untuk kelas tersebut. Dua properti juga didefinisikan. Semua properti ini berada dalam cakupan di bagian pengikatan non-statis do, seperti yang ditunjukkan oleh baris yang mencetak semua nilai tersebut.

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)

Outputnya sebagai berikut.

Initializing MyType.
Initializing object 1 2 2 4 8 16

Lihat juga