Baca dalam bahasa Inggris

Bagikan melalui


Pernyataan Enum (Visual Basic)

Mendeklarasikan enumerasi dan menentukan nilai anggotanya.

Sintaks

VB
[ <attributelist> ] [ accessmodifier ]  [ Shadows ]
Enum enumerationname [ As datatype ]
   memberlist
End Enum

Generator

  • attributelist

    Opsional. Daftar atribut yang berlaku untuk enumerasi ini. Anda harus menyertakan daftar atribut dalam tanda kurung sudut ("<" dan ">").

    Atribut FlagsAttribute menunjukkan bahwa nilai instans enumerasi dapat mencakup beberapa anggota enumerasi, dan bahwa setiap anggota mewakili bidang bit dalam nilai enumerasi.

  • accessmodifier

    Opsional. Menentukan kode apa yang dapat mengakses enumerasi ini. Bisa jadi salah satu dari yang berikut:

  • Shadows

    Opsional. Tunjukkan bahwa enumerasi ini mendeklarasikan kembali dan menyembunyikan elemen pemrograman bernama identik, atau kumpulan elemen kelebihan beban, di kelas dasar. Anda hanya dapat menentukan Bayangan hanya pada enumerasi itu sendiri, bukan pada salah satu anggotanya.

  • enumerationname

    Harus diisi. Nama enumerasi. Untuk informasi tentang nama yang valid, lihat Nama Elemen yang Dinyatakan.

  • datatype

    Opsional. Jenis data enumerasi dan semua anggotanya.

  • memberlist

    Harus diisi. Daftar konstanta anggota yang dideklarasikan dalam pernyataan ini. Beberapa anggota muncul di baris kode sumber individual.

    Setiap member memiliki sintaks dan bagian berikut: [<attribute list>] member name [ = initializer ]

    Bagian Deskripsi
    membername Harus diisi. Nama anggota ini.
    initializer Opsional. Ekspresi yang dievaluasi pada waktu kompilasi dan ditetapkan ke anggota ini.
  • End Enum

    Hentikan blok Enum.

Keterangan

Jika Anda memiliki sekumpulan nilai yang tidak berubah yang terkait secara logis satu sama lain, Anda dapat menentukannya bersama-sama dalam enumerasi. Ini memberikan nama yang bermakna untuk enumerasi dan anggotanya, yang lebih mudah diingat daripada nilai-nilainya. Anda kemudian dapat menggunakan anggota enumerasi di banyak tempat dalam kode Anda.

Manfaat menggunakan enumerasi meliputi yang berikut ini:

  • Mengurangi kesalahan yang disebabkan oleh transposisi atau salah ketik angka.

  • Memudahkan untuk mengubah nilai di masa mendatang.

  • Membuat kode lebih mudah dibaca, yang berarti kecil kemungkinan kesalahan akan terjadi.

  • Memastikan kompatibilitas penerusan. Jika Anda menggunakan enumerasi, kode Anda kemungkinannya lebih kecil untuk gagal jika di masa mendatang seseorang mengubah nilai yang terkait dengan nama anggota.

Enumerasi memiliki nama, jenis data yang mendasar, dan sekumpulan anggota. Setiap anggota mewakili konstanta.

Enumerasi yang dideklarasikan pada tingkat kelas, struktur, modul, atau antarmuka, di luar prosedur apa pun, adalah enumerasi anggota. Ini adalah anggota kelas, struktur, modul, atau antarmuka yang mendeklarasikannya.

Enumerasi anggota dapat diakses dari mana saja dalam kelas, struktur, modul, atau antarmuka mereka. Kode di luar kelas, struktur, atau modul harus memenuhi syarat nama enumerasi anggota dengan nama kelas, struktur, atau modul tersebut. Anda dapat menghindari kebutuhan untuk menggunakan nama yang sepenuhnya memenuhi syarat dengan menambahkan pernyataan Impor ke file sumber.

Enumerasi yang dideklarasikan pada tingkat namespace, di luar kelas, struktur, modul, atau antarmuka apa pun, adalah anggota namespace tempatnya muncul.

Konteks deklarasi untuk enumerasi harus berupa file sumber, namespace, kelas, struktur, modul, atau antarmuka, dan tidak dapat menjadi prosedur. Untuk informasi selengkapnya, lihat Konteks Deklarasi dan Tingkat Akses Default.

Anda dapat menerapkan atribut ke enumerasi secara keseluruhan, tetapi tidak untuk anggotanya satu per satu. Atribut memberikan informasi ke metadata rakitan.

Jenis Data

Pernyataan Enum dapat mendeklarasikan jenis data enumerasil. Setiap anggota mengambil jenis data enumerasi. Anda dapat menentukan Byte, Integer, Long, SByte, Short, UInteger, ULong, atau UShort.

Jika Anda tidak menentukan datatype untuk enumerasi, setiap anggota mengambil jenis data initializer-nya. Jika Anda menentukan datatype dan initializer, jenis data initializer harus dapat dikonversi ke datatype. Jika datatype atau initializer tidak ada, jenis data default ke Integer.

Menginisialisasi Anggota

Pernyataan Enum dapat menginisialisasi konten anggota yang dipilih di memberlist. Anda menggunakan initializer untuk menyediakan ekspresi yang akan ditetapkan ke anggota.

Jika Anda tidak menentukan initializer untuk anggota, Visual Basic menginisialisasinya baik ke nol (jika itu adalah memberyang pertama di memberlist), atau ke nilai yang lebih besar oleh salah satu dari yang segera mendahului member.

Ekspresi yang disediakan di masing-masing initializer dapat berupa kombinasi harfiah, konstanta lain yang sudah ditentukan, dan anggota enumerasi yang sudah ditentukan, termasuk anggota sebelumnya dari enumerasi ini. Anda dapat menggunakan operator aritmatika dan logis untuk menggabungkan elemen tersebut.

Anda tidak dapat menggunakan variabel atau fungsi di initializer. Namun, Anda dapat menggunakan kata kunci konversi seperti CByte dan CShort. Anda juga dapat menggunakannya AscW jika Anda menyebutnya dengan konstanta argumen String atau Char, karena itu dapat dievaluasi pada waktu kompilasi.

Enumerasi tidak boleh memiliki nilai titik kambang. Jika anggota diberi nilai titik-mengambang dan Option Strict diatur ke aktif, kesalahan pengkompilasi terjadi. Jika Option Strict tidak aktif, nilainya secara otomatis dikonversi ke jenis Enum.

Jika nilai anggota melebihi rentang yang diizinkan untuk jenis data yang mendasar, atau jika Anda menginisialisasi anggota mana pun ke nilai maksimum yang diizinkan oleh jenis data yang mendasar, kompiler melaporkan kesalahan.

Pengubah

Enumerasi anggota kelas, struktur, modul, dan antarmuka default ke akses publik. Anda dapat menyesuaikan tingkat aksesnya dengan pengubah akses. Enumerasi anggota namespace default ke akses pertemanan. Anda dapat menyesuaikan tingkat aksesnya ke publik, tetapi tidak untuk privat atau terlindungi. Untuk informasi selengkapnya, lihat Tingkat akses di Visual Basic.

Semua anggota enumerasi memiliki akses publik, dan Anda tidak dapat menggunakan pengubah akses apa pun padanya. Namun, jika enumerasi itu sendiri memiliki tingkat akses yang lebih terbatas, tingkat akses enumerasi yang ditentukan lebih diutamakan.

Secara default, semua enumerasi adalah jenis dan bidangnya adalah konstanta. Oleh karena itu kata kunci Shared, Static, dan ReadOnly tidak dapat digunakan saat mendeklarasikan enumerasi atau anggotanya.

Menetapkan Beberapa Nilai

Enumerasi biasanya mewakili nilai yang berbeda satu sama lain. Dengan menyertakan atribut FlagsAttribute dalam deklarasi Enum, Anda dapat menetapkan beberapa nilai ke instans enumerasi. Atribut FlagsAttribute menentukan bahwa enumerasi diperlakukan sebagai bidang bit, yaitu sekumpulan bendera. Ini disebut enumerasi bitwise.

Saat Anda mendeklarasikan enumerasi menggunakan atribut FlagsAttribute, kami sarankan Anda menggunakan pangkat 2, yaitu, 1, 2, 4, 8, 16, dan sebagainya, untuk nilai. Kami juga menyarankan agar "Nihil" menjadi nama anggota yang nilainya adalah 0. Untuk panduan tambahan, lihat FlagsAttribute dan Enum.

Contoh 1

Contoh berikut menunjukkan cara menggunakan pernyataan Enum. Perhatikan bahwa anggota disebut sebagai EggSizeEnum.Medium, dan bukan sebagai Medium.

VB
Public Class Egg
    Enum EggSizeEnum
        Jumbo
        ExtraLarge
        Large
        Medium
        Small
    End Enum

    Public Sub Poach()
        Dim size As EggSizeEnum

        size = EggSizeEnum.Medium
        ' Continue processing...
    End Sub
End Class

Contoh 2

Metode dalam contoh berikut berada di luar kelas Egg. Oleh karena itu, EggSizeEnum sepenuhnya memenuhi syarat sebagai Egg.EggSizeEnum.

VB
Public Sub Scramble(ByVal size As Egg.EggSizeEnum)
    ' Process for the three largest sizes.
    ' Throw an exception for any other size.
    Select Case size
        Case Egg.EggSizeEnum.Jumbo
            ' Process.
        Case Egg.EggSizeEnum.ExtraLarge
            ' Process.
        Case Egg.EggSizeEnum.Large
            ' Process.
        Case Else
            Throw New ApplicationException("size is invalid: " & size.ToString)
    End Select
End Sub

Contoh 3

Contoh berikut menggunakan pernyataanEnum untuk menentukan sekumpulan nilai konstanta bernama terkait. Dalam hal ini, nilainya adalah warna yang mungkin Anda pilih untuk mendesain formulir entri data untuk database.

VB
Public Enum InterfaceColors
    MistyRose = &HE1E4FF&
    SlateGray = &H908070&
    DodgerBlue = &HFF901E&
    DeepSkyBlue = &HFFBF00&
    SpringGreen = &H7FFF00&
    ForestGreen = &H228B22&
    Goldenrod = &H20A5DA&
    Firebrick = &H2222B2&
End Enum

Contoh 4

Contoh berikut menunjukkan nilai yang menyertakan angka positif dan negatif.

VB
Enum SecurityLevel
    IllegalEntry = -1
    MinimumSecurity = 0
    MaximumSecurity = 1
End Enum

Contoh 5

Dalam contoh berikut, klausa As digunakan untuk menentukan datatype dari enumerasi.

VB
Public Enum MyEnum As Byte
    Zero
    One
    Two
End Enum

Contoh 6

Contoh berikut ini memperlihatkan cara menggunakan dalam enumerasi bitwise. Beberapa nilai dapat ditetapkan ke instans enumerasi bitwise. Deklarasi Enum mencakup atribut FlagsAttribute, yang menunjukkan bahwa enumerasi dapat diperlakukan sebagai sekumpulan bendera.

VB
' Apply the Flags attribute, which allows an instance
' of the enumeration to have multiple values.
<Flags()> Public Enum FilePermissions As Integer
    None = 0
    Create = 1
    Read = 2
    Update = 4
    Delete = 8
End Enum

Public Sub ShowBitwiseEnum()

    ' Declare the non-exclusive enumeration object and
    ' set it to multiple values.
    Dim perm As FilePermissions
    perm = FilePermissions.Read Or FilePermissions.Update

    ' Show the values in the enumeration object.
    Console.WriteLine(perm.ToString)
    ' Output: Read, Update

    ' Show the total integer value of all values
    ' in the enumeration object.
    Console.WriteLine(CInt(perm))
    ' Output: 6

    ' Show whether the enumeration object contains
    ' the specified flag.
    Console.WriteLine(perm.HasFlag(FilePermissions.Update))
    ' Output: True
End Sub

Contoh 7

Contoh berikut mengulang melalui enumerasi. Ini menggunakan metode GetNames untuk mengambil array nama anggota dari enumerasi, dan GetValues untuk mengambil array nilai anggota.

VB
Enum EggSizeEnum
    Jumbo
    ExtraLarge
    Large
    Medium
    Small
End Enum

Public Sub Iterate()
    Dim names = [Enum].GetNames(GetType(EggSizeEnum))
    For Each name In names
        Console.Write(name & " ")
    Next
    Console.WriteLine()
    ' Output: Jumbo ExtraLarge Large Medium Small 

    Dim values = [Enum].GetValues(GetType(EggSizeEnum))
    For Each value In values
        Console.Write(value & " ")
    Next
    Console.WriteLine()
    ' Output: 0 1 2 3 4 
End Sub

Lihat juga