Bagikan melalui


Pernyataan Enum (Visual Basic)

Mendeklarasikan enumerasi dan menentukan nilai anggotanya.

Sintaksis

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

Bagian

  • attributelist

    Fakultatif. Daftar atribut yang berlaku untuk enumerasi ini. Anda harus memasukkan 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

    Fakultatif. Menentukan kode apa yang dapat mengakses enumerasi ini. Dapat berupa salah satu hal berikut:

  • Shadows

    Fakultatif. Menentukan bahwa enumerasi ini mendeklarasikan ulang dan menyembunyikan elemen pemrograman bernama identik, atau sekumpulan elemen yang kelebihan beban, dalam kelas dasar. Anda hanya dapat menentukan Bayangan pada enumerasi itu sendiri, bukan pada salah satu anggotanya.

  • enumerationname

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

  • datatype

    Fakultatif. Jenis data enumerasi dan semua anggotanya.

  • memberlist

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

    Masing-masing member memiliki sintaks dan bagian berikut: [<attribute list>] membername [ = initializer ]

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

    Enum Menghentikan blok.

Komentar

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:

  • Mengurangi kesalahan yang disebabkan oleh menukar posisi atau salah ketik angka.

  • Memudahkan untuk mengubah nilai di masa mendatang.

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

  • Memastikan kompatibilitas penerusan. Jika Anda menggunakan enumerasi, kode Anda cenderung gagal jika di masa mendatang seseorang mengubah nilai yang sesuai 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 layanan 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 Bawaan.

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

Jenis Data

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

Jika Anda tidak menentukan datatype untuk enumerasi, setiap anggota mengambil jenis datanya initializer. Jika Anda menentukan dan datatypeinitializer, jenis initializer data harus dapat dikonversi ke datatype. Jika tidak juga datatypeinitializer 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 kepada anggota.

Jika Anda tidak menentukan initializer untuk anggota, Visual Basic menginisialisasinya menjadi nol (jika itu adalah yang pertama member dalam memberlist), atau ke nilai yang lebih besar dari yang segera didahului member.

Ekspresi yang disediakan di masing-masing initializer dapat berupa kombinasi literal, 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 dalam initializer. Namun, Anda dapat menggunakan kata kunci konversi seperti CByte dan CShort. Anda juga dapat menggunakannya AscW jika Anda memanggilnya dengan konstanta String atau Char argumen, karena itu dapat dievaluasi pada waktu kompilasi.

Enumerasi tidak boleh memiliki nilai floating-point. Jika anggota diberi nilai floating-point dan Option Strict diatur ke aktif, kesalahan pengkompilasi terjadi. Jika Option Strict nonaktif, nilai secara otomatis dikonversi ke Enum jenis .

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, pengkompilasi 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 teman. 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 pada mereka. 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. SharedOleh karena itu kata kunci , , Staticdan ReadOnly tidak dapat digunakan saat mendeklarasikan enumerasi atau anggotanya.

Menetapkan Beberapa Nilai

Enumerasi biasanya mewakili nilai yang saling eksklusif. Dengan menyertakan FlagsAttribute atribut dalam Enum deklarasi, 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 dengan menggunakan FlagsAttribute atribut , kami sarankan Anda menggunakan kekuatan 2, yaitu, 1, 2, 4, 8, 16, dan sebagainya, untuk nilai. Kami juga menyarankan agar "None" menjadi nama anggota yang nilainya adalah 0. Untuk panduan tambahan, lihat FlagsAttribute dan Enum.

Contoh 1

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

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 Egg luar kelas. Oleh karena itu, EggSizeEnum sepenuhnya memenuhi syarat sebagai Egg.EggSizeEnum.

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 pernyataan untuk menentukan sekumpulan nilai konstanta Enum bernama terkait. Dalam hal ini, nilainya adalah warna yang mungkin Anda pilih untuk merancang formulir entri data untuk database.

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.

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

Contoh 5

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

Public Enum MyEnum As Byte
    Zero
    One
    Two
End Enum

Contoh 6

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

' 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 berulang melalui enumerasi. Ini menggunakan GetNames metode untuk mengambil array nama anggota dari enumerasi, dan GetValues untuk mengambil array nilai anggota.

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