Enumerations: Making Select Case Blocks Easier to Understand
Listing 11.3 presents a Select Case statement block for the processing of a days-of-the-week type of programming problem. The comments help the reader understand what the code is doing, but you can make it even more understandable by using Visual Basic .NET's enumeration statement. The enumeration statement allows you to define a set of named constants for use in a program. This is the syntax of the Enum statement:
[AccessSpecifier] Enum EnumName [As Type] ' List of Enum members End Enum
If AccessSpecifier is not supplied, it is Public by default, but it can have other access types as well. (You will learn more about access specifiers in Chapter 15, "Encapsulation.") If you elect to specify the type of data by using the As keyword, the data types are limited to Byte , Integer , Long , and Short . If you do not specify the type, the enumeration members are Integer by default. The scope for enumerations is limited to the module, namespace, and assembly levels. This means that enumerations cannot be defined with local scope.
Consider the following example:
Enum ThisDay Monday = 1 Tuesday = 2 Wednesday = 3 Thursday = 4 Friday = 5 Saturday = 6 Sunday = 7 End Enum
The members of the ThisDay enumeration are simply named constants for each day. This definition would appear near the top of the Class code, after the Inherits statement. Note that you can use the constants in expressions, but you cannot change their values in any way after they are initialized in the Enum statement block.
You can now rewrite Listing 11.3 as Listing 11.4.
Listing 11.4 Using Enumerations in a Select Case Statement Block
Select ThisDay Case ThisDay.Monday TakeHeadacheMedicine() Case ThisDay.Tuesday GroceryShop() Case ThisDay.Wednesday PayBills() Case ThisDay.Thursday PayMoreBills() Case ThisDay.Friday LeagueNight() Case ThisDay.Saturday Bathe() Case ThisDay.Sunday Rest() Case Else ' Catch-all MessageBox.Show("Improper value for MyDay") End Select
Even though the change from Listing 11.3 to Listing 11.4 has no real impact on the performance of the code, the use of enumerations makes it easier to understand what the code is doing. This is especially true when comments are missing.