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