Pernyataan Struktur

Mendeklarasikan nama struktur dan memperkenalkan definisi variabel, properti, peristiwa, dan prosedur yang tercakup dalam struktur.

Sintaks

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Partial ] _
Structure name [ ( Of typelist ) ]
    [ Implements interfacenames ]
    [ datamemberdeclarations ]
    [ methodmemberdeclarations ]
End Structure

Generator

Term Definisi
attributelist Opsional. Lihat Daftar Atribut.
accessmodifier Opsional. Bisa jadi salah satu dari yang berikut:

- Publik
- Terlindungi
- Teman
- Privat
- Teman yang Terlindungi
- Dilindungi secara Privat

Lihat Tingkat akses di Visual Basic.
Shadows Opsional. Lihat Bayangan.
Partial Opsional. Menunjukkan definisi parsial struktur. Lihat Parsial.
name Harus diisi. Nama struktur ini. Lihat Nama Elemen yang Dideklarasikan.
Of Opsional. Menentukan bahwa ini adalah struktur generik.
typelist Diperlukan jika Anda menggunakan kata kunci Dari. Daftar parameter jenis untuk struktur ini. Lihat Daftar Jenis.
Implements Opsional. Menunjukkan bahwa struktur ini mengimplementasikan anggota dari satu atau beberapa antarmuka. Lihat Pernyataan Implements.
interfacenames Diperlukan jika Anda menggunakan pernyataan Implements. Nama antarmuka yang diterapkan struktur ini.
datamemberdeclarations Harus diisi. Nol atau lebih banyak pernyataan Const, Dim, Enum, atau Event yang mendeklarasikan anggota data struktur.
methodmemberdeclarations Opsional. Nol atau lebih banyak deklarasi prosedur Function, Operator, Property, atau Sub yang berfungsi sebagai anggota metode struktur.
End Structure Harus diisi. Mengakhiri definisi Structure.

Keterangan

Pernyataan Structure mendefinisikan jenis nilai komposit yang dapat Anda kustomisasi. Struktur adalah generalisasi jenis yang ditentukan pengguna (UDT) dari versi Visual Basic sebelumnya. Untuk informasi selengkapnya, lihat Struktur.

Struktur mendukung banyak fitur yang sama dengan kelas. Misalnya, struktur dapat memiliki properti dan prosedur, mereka dapat menerapkan antarmuka, dan dapat memiliki konstruktor berparameter. Namun, ada perbedaan signifikan antara struktur dan kelas di area seperti pewarisan, deklarasi, dan penggunaan. Selain itu, kelas merupakan jenis referensi dan struktur merupakan jenis nilai. Untuk informasi selengkapnya, lihat Struktur dan Kelas.

Anda hanya dapat menggunakan Structure di tingkat namespace atau modul. Ini berarti konteks deklarasi untuk struktur harus berupa file sumber, namespace, kelas, struktur, modul, atau antarmuka, dan tidak dapat menjadi prosedur atau blok. Untuk informasi selengkapnya, lihat Konteks Deklarasi dan Tingkat Akses Default.

Struktur default ke akses Teman. Anda dapat menyesuaikan tingkat aksesnya dengan pengubah akses. Untuk informasi selengkapnya, lihat Tingkat akses di Visual Basic.

Aturan

  • Bersarang. Anda dapat menentukan satu struktur di dalam struktur lain. Struktur luar disebut struktur kontainer, dan struktur dalam disebut struktur berlapis. Namun, Anda tidak dapat mengakses anggota struktur berlapis melalui struktur kontainer. Anda harus mendeklarasikan variabel jenis data struktur berlapis sebagai gantinya.

  • Deklarasi Anggota. Anda harus mendeklarasikan setiap anggota struktur. Anggota struktur tidak boleh Terlindungi atau Protected Friend karena tidak ada yang dapat mewarisi dari struktur. Namun, struktur itu sendiri boleh Protected atau Protected Friend.

    Anda dapat mendeklarasikan nol atau lebih variabel yang tidak dibagikan atau peristiwa yang tidak dibagikan dan nonkustom dalam struktur. Tidak boleh hanya ada konstanta, properti, dan prosedur, meskipun beberapa di antaranya tidak dibagikan.

  • Inisialisasi. Anda tidak dapat menginisialisasi nilai anggota data yang tidak dibagikan dari struktur sebagai bagian dari deklarasinya. Anda harus menginisialisasi anggota data tersebut melalui konstruktor berparameter pada struktur, atau menetapkan nilai kepada anggota setelah membuat instans struktur.

  • Turunan. Struktur tidak dapat mewarisi dari jenis apa pun selain ValueType, dari mana semua struktur mewarisi. Secara khusus, satu struktur tidak dapat mewarisi dari struktur lain.

    Anda tidak dapat menggunakan Pernyataan Warisan dalam definisi struktur, bahkan untuk menentukan ValueType.

  • Implementasi. Jika struktur menggunakan Pernyataan Implementasi, Anda harus mengimplementasikan setiap anggota yang ditentukan oleh setiap antarmuka yang ditentukan di interfacenames.

  • Properti Default. Struktur dapat menentukan paling banyak satu properti sebagai properti default, menggunakan pengubah Default. Untuk informasi selengkapnya, lihat Default.

Perilaku

  • Tingkat Akses. Dalam struktur, Anda dapat mendeklarasikan setiap anggota dengan tingkat aksesnya sendiri. Semua anggota struktur default ke akses Publik. Perhatikan bahwa jika struktur itu sendiri memiliki tingkat akses yang lebih terbatas, struktur secara otomatis membatasi akses ke anggotanya, bahkan jika Anda menyesuaikan tingkat akses mereka dengan pengubah akses.

  • Cakupan. Struktur berada dalam cakupan di seluruh namespace layanan, kelas, struktur, atau modulnya.

    Ruang lingkup setiap anggota struktur adalah seluruh struktur.

  • Masa pakai. Struktur tidak memiliki masa pakai. Sebaliknya, setiap instans struktur tersebut memiliki masa pakai yang independen dari semua instans lainnya.

    Masa pakai instans dimulai saat instans dibuat oleh klausul Operator Baru. Masa pakai berakhir ketika masa pakai variabel yang menyimpannya berakhir.

    Anda tidak dapat memperpanjang masa pakai instans struktur. Perkiraan untuk fungsionalitas struktur statis disediakan oleh modul. Untuk informasi selengkapnya, lihat Pernyataan Modul.

    Anggota struktur memiliki masa pakai yang bergantung pada bagaimana dan di mana mereka dinyatakan. Untuk informasi selengkapnya, lihat "Seumur Hidup" di Pernyataan Kelas.

  • Kualifikasi. Kode di luar struktur harus memenuhi syarat nama anggota dengan nama struktur tersebut.

    Jika kode di dalam struktur berlapis membuat referensi yang tidak memenuhi syarat ke elemen pemrograman, Visual Basic mencari elemen terlebih dahulu dalam struktur berlapis, kemudian di dalam struktur yang berisi, dan seterusnya hingga elemen berisi yang ada di bagian terluar. Untuk informasi selengkapnya, lihat Referensi ke Elemen yang Dideklarasikan.

  • Konsumsi Memori. Seperti semua jenis data komposit, Anda tidak dapat secara akurat menghitung total konsumsi memori struktur dengan menambahkan alokasi penyimpanan nominal anggotanya. Selain itu, Anda tidak dapat dengan aman berasumsi bahwa urutan penyimpanan dalam memori sama dengan urutan deklarasi Anda. Jika perlu mengontrol tata letak penyimpanan struktur, Anda dapat menerapkan atribut StructLayoutAttribute ke pernyataan Structure.

Contoh

Contoh berikut menggunakan pernyataan Structure untuk menentukan sekumpulan data terkait untuk karyawan. Ini menunjukkan penggunaan anggota Public, Friend, dan Private untuk mencerminkan sensitivitas item data. Contoh juga menunjukkan prosedur, properti, dan anggota peristiwa.

Public Structure employee
    ' Public members, accessible from throughout declaration region.
    Public firstName As String
    Public middleName As String
    Public lastName As String
    ' Friend members, accessible from anywhere within the same assembly.
    Friend employeeNumber As Integer
    Friend workPhone As Long
    ' Private members, accessible only from within the structure itself.
    Private homePhone As Long
    Private level As Integer
    Private salary As Double
    Private bonus As Double
    ' Procedure member, which can access structure's private members.
    Friend Sub CalculateBonus(ByVal rate As Single)
        bonus = salary * CDbl(rate)
    End Sub
    ' Property member to return employee's eligibility.
    Friend ReadOnly Property Eligible() As Boolean
        Get
            Return level >= 25
        End Get
    End Property
    ' Event member, raised when business phone number has changed.
    Public Event ChangedWorkPhone(ByVal newPhone As Long)
End Structure

Untuk informasi selengkapnya tentang cara menggunakan Structure, lihat Variabel Struktur.

Lihat juga