Bagikan melalui


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

Lihat juga