Visual Basic .net Enumerations

An enumeration is a list of integer values, each one mapped to a name.

Let us consider an example in which we have to store a category into a Class. Let us also assume that the Class name is AccoutClass and categories are creditor, debtor, bank and general. Instead of using literals to describe the various categories, we will use an enumeration with the following names.

'Enumerator for Account Category
Public Enum AccountCategory
Creditor = 1
Debtor = 2
Bank = 3
General = 4
End Enum

The above statements must appear outside any procedure we use in the class. We will place them at the beginning of the file, right after the declaration of the Class.

In our example, the name Creditor corresponds to 1, the name Debtor corresponds to 2, and so on. Notice that we use enumerations to replace numeric constants with more meaningful names, in this case AccountCategory. We will see how enumerations are used both in the class and the calling application.

The below code shows how enumerations are used in the calling software application program.
Select Case itemClicked.Text

Case "&Creditor"
  MsgBox("Creditor Accounts")

  Dim AccForm As New AccountForm
  AccForm.Text = "Creditor Accounts"
  AccForm.AccountCat = AccountCategory.Creditor

Case "&Debtor"
  MsgBox("Debtor Accounts")

  Dim AccForm As New AccountForm
  AccForm.Text = "Debtor Accounts"
  AccForm.AccountCat = AccountCategory.Debtor
End Select

In the above code, we check whether the user has selected an account, and then assign AccountCategory enumerator member - Creditor or Debtor, to a variable AccountCat of the AccForm.

As we can see, the members of the AccountCategory enumeration become properties of the enumerator.

The advantage of using enumerations is that we can manipulate meaningful names instead of numeric constants. This makes your vb code less prone to errors and far easier to understand.

Note that the members of an enumeration are always constants.

Because the AccountCategory enumeration was declared as Public, it will be exposed to any application that uses the class.

Another example of enumeration is given below. This example shows how to allow access to an user depending on their username and password.

'Enumerator for access levels
Public Enum BLAccessLevel
	BLFullAccess = 1
	BLManagerAccess = 2
	BLRestrictedAccess = 3
End Enum

Private Overloads Sub VerifyAccess(ByVal sUserName As String, 
ByVal spassword As String)

Dim sRole As String
'Login and authenticate based on passed credentials

PrivateUserRoles.Login(sUserName, spassword)
'The security object will return a Roles property that contains all 

associated with the given employee

For Each sRole In PrivateUserRoles.Roles()
	'Set an appropriate level of authorization based on the 

assigned roles

	Select Case sRole
	'Certain employees in HR must have access to all relevant data

		Case "HRManager", "HRClerk", "HRPayrollClerk"
			PrivateAccessLevel = BLAccessLevel.BLFullAccess
		'Managers must be able to view information

		Case "Manager", "FactorySupervisor", "QAManager"
			PrivateAccessLevel = 

		Case Else

	End Select
If PrivateAccessLevel = BLAccessLevel.BLFullAccess Then Exit For
End Sub

more on String Enumerations in VB.NET with an example