Pernyataan With...End With (Visual Basic)
Mengeksekusi serangkaian pernyataan yang berulang kali merujuk pada satu objek atau struktur sehingga pernyataan dapat menggunakan sintaks yang disederhanakan saat mengakses anggota objek atau struktur. Saat menggunakan struktur, Anda hanya dapat membaca nilai anggota atau memanggil metode, dan Anda mendapatkan kesalahan jika Anda mencoba menetapkan nilai kepada anggota struktur yang With...End With
digunakan dalam pernyataan.
Sintaks
With objectExpression
[ statements ]
End With
Generator
Term | Definisi |
---|---|
objectExpression |
Harus diisi. Ekspresi yang mengevaluasi ke suatu objek. Ekspresi mungkin sewenang-wenang kompleks dan dievaluasi hanya sekali. Ekspresi dapat dievaluasi ke jenis data apa pun, termasuk jenis dasar. |
statements |
Opsional. Satu atau beberapa pernyataan antara With dan End With yang dapat merujuk ke anggota objek yang dihasilkan oleh evaluasi objectExpression . |
End With |
Harus diisi. Mengakhiri definisi With blok. |
Keterangan
Dengan menggunakanWith...End With
, Anda dapat melakukan serangkaian pernyataan pada objek tertentu tanpa menentukan nama objek beberapa kali. With
Dalam blok pernyataan, Anda dapat menentukan anggota objek yang dimulai dengan titik, seolah-olah With
objek pernyataan mendahuluinya.
Misalnya, untuk mengubah beberapa properti pada satu objek, tempatkan pernyataan penetapan properti di dalam With...End With
blok, mengacu pada objek hanya sekali, bukan sekali untuk setiap penetapan properti.
Jika kode Anda mengakses objek yang sama dalam beberapa pernyataan, Anda mendapatkan manfaat berikut dengan menggunakan With
pernyataan :
Anda tidak perlu mengevaluasi ekspresi kompleks beberapa kali atau menetapkan hasilnya ke variabel sementara untuk merujuk ke anggotanya beberapa kali.
Anda membuat kode Anda lebih mudah dibaca dengan menghilangkan ekspresi kualifikasi berulang.
Jenis objectExpression
data dapat berupa jenis kelas atau struktur apa pun atau bahkan jenis dasar Visual Basic seperti Integer
. Jika objectExpression
menghasilkan apa pun selain objek, Anda hanya dapat membaca nilai anggotanya atau memanggil metode, dan Anda mendapatkan kesalahan jika Anda mencoba menetapkan nilai kepada anggota struktur yang digunakan dalam pernyataan With...End With
. Ini adalah kesalahan yang sama yang akan Anda dapatkan jika Anda memanggil metode yang mengembalikan struktur dan segera mengakses dan menetapkan nilai kepada anggota hasil fungsi, seperti GetAPoint().x = 1
. Masalah dalam kedua kasus adalah bahwa struktur hanya ada pada tumpukan panggilan, dan tidak mungkin anggota struktur yang dimodifikasi dalam situasi ini dapat menulis ke lokasi sehingga kode lain dalam program dapat mengamati perubahan.
objectExpression
dievaluasi sekali, setelah masuk ke blok. Anda tidak dapat menetapkan objectExpression
ulang dari dalam With
blok.
With
Dalam blok, Anda dapat mengakses metode dan properti hanya dari objek yang ditentukan tanpa memenuhi syarat. Anda dapat menggunakan metode dan properti objek lain, tetapi Anda harus memenuhi syarat dengan nama objek mereka.
Anda dapat menempatkan satu With...End With
pernyataan dalam pernyataan lain. Pernyataan berlapis With...End With
mungkin membingungkan jika objek yang dirujuk tidak jelas dari konteks. Anda harus memberikan referensi yang sepenuhnya memenuhi syarat ke objek yang berada di blok luar With
saat objek dirujuk dari dalam blok dalamWith
.
Anda tidak dapat bercabang With
ke blok pernyataan dari luar blok.
Kecuali blok berisi perulangan, pernyataan hanya berjalan sekali. Anda dapat melapisi berbagai jenis struktur kontrol. Untuk informasi selengkapnya, lihat Struktur Kontrol Berlapis.
Catatan
Anda juga dapat menggunakan With
kata kunci di penginisialisasi objek. Untuk informasi dan contoh selengkapnya, lihat Penginisialisasi Objek: Jenis Bernama dan Anonim dan Jenis Anonim.
Jika Anda menggunakan With
blok hanya untuk menginisialisasi properti atau bidang objek yang baru saja Anda buat, pertimbangkan untuk menggunakan penginisialisasi objek sebagai gantinya.
Contoh 1
Dalam contoh berikut, setiap With
blok menjalankan serangkaian pernyataan pada satu objek.
Private Sub AddCustomer()
Dim theCustomer As New Customer
With theCustomer
.Name = "Coho Vineyard"
.URL = "http://www.cohovineyard.com/"
.City = "Redmond"
End With
With theCustomer.Comments
.Add("First comment.")
.Add("Second comment.")
End With
End Sub
Public Class Customer
Public Property Name As String
Public Property City As String
Public Property URL As String
Public Property Comments As New List(Of String)
End Class
Contoh 2
Contoh berikut melapisi With…End With
pernyataan. Dalam pernyataan berlapis With
, sintaks mengacu pada objek dalam.
Dim theWindow As New EntryWindow
With theWindow
With .InfoLabel
.Content = "This is a message."
.Foreground = Brushes.DarkSeaGreen
.Background = Brushes.LightYellow
End With
.Title = "The Form Title"
.Show()
End With