Enums
Enum (อีนัม) เป็นประเภทข้อมูลที่ให้คุณสามารถกำหนดชื่อให้กับค่าคงที่ได้ โดยค่าของ Enum นั้นจะใช้กับชุดของข้อมูลแบบจำนวนเต็ม แต่เราสามารถอ้างถึงค่าคงที่นั้นได้ผ่านตัวอักษร
ในการใช้ Enum จะทำให้เราสามารถทำงานกับค่าคงที่เหล่านั้นได้สะดวกขึ้น เช่น การใช้ชื่อแทนการใช้ค่าคงที่โดยตรง ซึ่งจะช่วยให้ลดความผิดพลาดได้ในการเขียนโปรแกรมได้ นี่เป็นรูปแบบของการประกาศ Enum ใน ภาษา Visual Basic
Enum Name
[Members]
End Enum
Enum นั้นสามารถประกาศได้ในคลาสหรือโมดูลเท่านั้น และ Enum ไม่สามารถประกาศในฟังก์ชันหรือเมธอดได้ ในการประกาศจะใช้คำสั่ง Enum
และสิ้นสุดด้วยคำสั่ง End Enum
และมันสามารถกำหนดระดับการเข้าถึงแบบ Public Protected Friends หรือ Private
การใช้งาน Enum
หลังจากที่ Enum ได้ถูกประกาศแล้ว เราสามารถถึงค่าของ Enum โดยชื่อของมันและตามด้วยสมาชิกในรูปแบบ EnumName.Member
ต่อไปมาดูตัวอย่างการใช้ Enum ในภาษา Visual Basic
Module EnumExample
Public Enum Days
Sunday
Monday
Tueday
Wednesday
Thursday
Friday
Saturday
End Enum
Sub Main()
Dim d As Integer = Days.Tueday
Console.WriteLine(d)
Console.WriteLine(Days.Tueday)
Console.WriteLine(5 = Days.Friday)
End Sub
End Module
ในตัวอย่างเราได้สร้าง Enum ที่ชื่อว่า Days
และกำหนดสมาชิกให้กับ Enum เป็น literal ของวันในสัปดาห์ ในการกำหนดสมาชิกให้กับ Enum ภาษา Visual Basic จะกำหนดค่าคงที่ให้กับสมาชิกเริ่มจาก 0 1 2 3 ... ไปจนถึงสมาชิกตัวสุดท้ายของ Enum
นั้นหมายความว่าค่าคงที่ 0 นั้นมีค่าเท่ากับ Sunday
ค่าคงที่ 1 มีค่าเท่ากับ Monday
ไปตามลำดับจนถึงสมาชิกตัวสุดท้าย นั่นหมายความว่าเราสามารถใช้ค่าของ Enum แทนที่ค่าคงที่เหล่านี้หรือใช้ทดแทนกันได้
Dim d As Integer = Days.Tueday
ในโมดูลหลักเป็นการใช้งาน Enum เราได้กำหนดค่าของ Enum ให้กับตัวแปร d
เพราะว่าค่าของ Enum นั้นเป็นค่าของ Integer อยู่แล้ว
Console.WriteLine(d)
Console.WriteLine(Days.Tueday)
Console.WriteLine(5 = Days.Friday)
เราได้ทำการแสดงผลค่าของตัวแปร d
และค่าคงที่ Days.Tueday
ซึ่งจะได้ผลลัพธ์เป็น 2
และทำการเปรียบเทียบค่าของ Enum กับ 5 จะได้ผลลัพธ์เป็น True
เพราะว่า Enum สามารถแสดงได้ในรูปของเลขจำนวนเต็มและตัวอักษรมันจึงมีค่าเท่ากัน
2
2
True
นี่เป็นผลลัพธ์ของโปรแกรมของตัวอย่างการใช้ Enum
การใช้ Enum กับค่าที่กำหนดเอง
โดยปกติแล้ว Enum จะกำหนดค่าคงที่ให้กับสมาชิกเริ่มจาก 0 และเพิ่มที่ละ 1 สำหรับตัวแปรถัดไป ในภาษา Visual Basic เราสามารถกำหนดค่าแบบกำหนดเองให้กับ Enum โดยที่ไม่ต้องเรียงลำดับได้ โดยค่านั้นสามารถเป็นค่าบวกหรือลบได้ และสำหรับจำนวนเต็มใดๆ ในประเภทของ Byte Short Integer หรือ Long
Module HttpRequestExample
Public Enum NetworkState
SUCCESS = 200
TEMPORARY_REDIRECT = 301
NOT_FOUND = 404
SERVER_ERROR = 500
UNKNOWN
End Enum
Public Sub ResponseState(ByVal state As Integer)
If state = NetworkState.SUCCESS Then
Console.WriteLine("Connect to server success")
ElseIf state = NetworkState.NOT_FOUND Then
Console.WriteLine("Page request not found")
ElseIf state = NetworkState.TEMPORARY_REDIRECT Then
Console.WriteLine("Page is redireced to another URL")
ElseIf state = NetworkState.SERVER_ERROR Then
Console.WriteLine("Server encountered error")
ElseIf state = NetworkState.UNKNOWN Then
Console.WriteLine("Response code is unknown")
End If
End Sub
Sub Main()
ResponseState(200)
ResponseState(500)
ResponseState(501)
End Sub
End Module
ในตัวอย่างเป็นการใช้ Enum ในการกำหนดค่าสถานะของการตอบสนองการร้องขอของหน้าเว็บเพจที่อยู่ในเลขจำนวนเต็ม 3 หลัก โดยเราได้สร้าง Enum NetworkState
ขึ้นมาและกำหนดค่าแบบกำหนดเองให้กับสมาชิกใน Enum และสำหรับ UNKNOWN
เราไม่ได้กำหนดค่าตัวเลขให้ ซึ่งในภาษา Visual Basic จะใช้ค่าที่เพิ่มจากก่อนหน้าไป 1 คือ 501
ข้อควรระวังถ้าคุณได้กำหนดค่าของ SUCCESS
เป็น 501 คอมไพเลอร์พยายามจะเพิ่มค่าของ UNKNOWN ไป 1 ทำให้ซ้ำกับค่าที่มีอยู่ก่อนแล้ว จะทำให้มันถูกเพิกเฉยจากการเป็นสมาชิกของ Enum ในการกำหนดค่าแบบกำหนดเองคุณต้องตรวจสอบให้แน่ใจว่ามันจะไม่ซ้ำกัน
Connect to server success
Server encountered error
Response code is unknown
และนี่เป็นผลลัพธ์ของโปรแกรมของเรา
ในบทนี้เราได้พูดถึงเกี่ยวกับ Enum และคุณได้เรียนรู้ถึงวิธีการประกาศและใช้งานกับค่าคงที่ ซึ่งมันมีประโยชน์ในการทำให้ค่าคงที่ของเรามีความหมายโดยการกำหนดชื่อให้กับมัน