วันพุธที่ ๑ สิงหาคม พ.ศ. ๒๕๕๐

Value Types (2) : User-defined value types

User-defined value types ก็คือ การใช้ Structure ... End Structure แทน Class ... End Class ถ้ามองในอีกมุมนึงก็จะพบว่า Structure คือ keyword ในการทำ encapsulation หรือเป็นการเอา Built-in types มาบรรจุไว้นั้นเอง ซึ่ง Structure แตกต่างจาก Class หลายอย่าง ได้แก่
1. มีการเก็บค่า (allocate) ในหน่วยความจำเป็นแบบ stack
2. ไม่สามารถ inherit ได้
3. ไม่ยืดหยุ่นและมีข้อกำจัดการใช้ event handle
4. จะต้องมี attribute หรือ Property หรือ field อย่างน้อย 1 ตัว

แม้ Structure จะมีข้อด้อยมากกว่า Class แต่จริงๆ แล้ว Structure เกิดมาเพื่อทำงานกับข้อมูลจำนวนไม่มาก นั้นคือ ควรมี instance ของ Structure ขนาดเล็กกว่า 16 bytes (คำนวณคร่าวๆ ได้จากผลรวมของขนาด Attribute หรือ property ของ Structure นั้น) ซึ่งจะทำให้ Structure ทำงานได้เร็ว (performance) กว่า Class

โดย default แล้ว ถ้าไม่เขียน accessibility ใดๆ (Public, Private, Friend, Protected) จะถือว่าเป็น Public และสมาชิกใดๆ ภายใน Structure จะต้องระบุ accessibility กรณีที่ใช้ Dim หรือไม่ระบุกับสมาชิกก็จะถือว่าสมาชิกนั้นเป็น Public

ตัวอย่าง

Public Structure Car
Public CC As UShort
Public Gear As Byte

Public Sub New(ByVal Brand As String)
...
End Sub

Public Sub Break()
...
End Sub
End Structure

แหล่งข้อมูล :
Using Structures in VB.NET - By PrasadGVL.
VB.NET Structure Statement - By Michael McIntyre

Related Post