รู้จักกับ Enum

เป็นที่รู้กันว่าการเขียนโปรแกรมที่ดี ไม่ควรจะ hard code หรือฝังค่าตัวเลขที่มีความหมายเฉพาะไว้ในโปรแกรม ทางที่ดีควรทำเป็น Constant ไว้ แล้วเขียนโปรแกรมอิงกับ Constant นั้น หากวันหลังจะต้องมีการเปลี่ยนแปลงค่า ก็ไปเปลี่ยนที่ Constant ที่เดียว ไม่ต้องไปไล่แก้ทั้งโปรแกรม ซึ่ง Enum ก็มีลักษณะคล้ายกับ Constant คือช่วยให้เราไม่จำเป็นต้อง hard code ตัวเลขในโปรแกรมเรา จะต่างกับ Constant ก็ตรงที่ Enum ยังช่วยเราในการจัดหมวดหมู่ของ Constant ได้ด้วย เช่น

Public Enum FoodStyle
    Thai = 1
    Chinese = 2
    Japanese = 3
    Italian = 4
End Enum

Public Enum MusicStyle
    Hiphop = 1
    Pop = 2
    Rock = 3
    Raggae = 4
End Enum

แม้ว่าทั้งสองเรื่องนี้จะใช้ค่า constant เดียวกันคือ 1-4 แต่การที่เราประกาศเป็น Enum ไว้ จะทำให้เราสามารถใช้งานได้โดยไม่ปะปนกัน ตัวอย่างเช่น

Dim myFoodStyle As FoodStyle
Dim myMusicStyle As MusicStyle

myFoodStyle = FoodStyle.Japanese
myMusicStyle = MusicStyle.Rock

เวลาเราเขียน code นั้น Visual Studio ก็จะแสดงรายการของค่า Enum ให้ตามแต่ประเภทของ Enum ทำให้เขียนได้สะดวกขึ้น เพราะไม่ต้องจดจำว่าเลขไหน มีความหมายว่าอย่างไร แต่แน่นอนว่า แท้จริงแล้วค่าของ Enum ก็คือตัวเลขดีๆ นี่เอง หากเราจะทะลึ่งใส่ค่าให้ Enum แบบแปลกๆ เช่น

myFoodStyle = FoodStyle.Japanese
myFoodStyle = MusicStyle.Rock
myFoodStyle = 3

code ทั้งสามแบบนี้ก็ถือว่าใช้ได้ ทำงานได้เหมือนกัน
สังเกตด้วยว่า Enum นี้ไม่ต้อง new เพราะอย่างที่บอกว่ามันเป็นแค่ตัวเลขเท่านั้น ไม่ใช่ object

ความจริงแล้ว .NET Compiler ฉลาดพอที่จะ run เลข Enum ให้เราได้ โดยไม่จำเป็นต้องใส่เลขให้มันทุกตัว เช่น ถ้าเราเขียนว่า

Public Enum FoodStyle
    Thai
    Chinese
    Japanese
    Italian
End Enum

แบบนี้ก็ได้เหมือนกัน โดยที่ Compiler จะจับเอาคำว่า Thai มีค่าเท่ากับ 0, Chinese=1, Japanese=2 ตามลำดับ
หรือเราจะไปบังคับให้ค่าแรกเท่ากับหนึ่ง ก็ทำได้เหมือนกันโดยเขียนแบบนี้

Public Enum FoodStyle
    Thai = 1
    Chinese
    Japanese
    Italian
End Enum

แล้วค่า Enum ที่เหลือ ก็จะกลายเป็น 2, 3 และ 4 เองตามลำดับ

One Response to “รู้จักกับ Enum”

  1. cheaphdtvloversworld Says:

    ขอบคุณมากครับ


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: