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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk