C#

Struct vs Class

ประเภทข้อมูล

ประเภทข้อมูลใน dot net จะมี 2 แบบ คือ

  • Reference type
  • Value type

Struct เป็นข้อมูลแบบ Value type

Class  เป็นข้อมูลแบบ Reference Type

Reference type เก็บข้อมูลไว้ในหน่วยความจำที่เรียกว่า Heap ส่วน value type จะมาอยู่ในหน่วยความจำเมื่อเรียกใช้ (โปรแกรม run ไปถึง method ที่มีการใช้ตัวแปร ถึงจะทำการจองหน่วยความจำ)

Reference type เป็นข้อมูลแบบ Pointer คือจะชี้ไปหาข้อมูลอื่น

Value type เก็บข้อมูลไว้ที่ตัวมันเอง

การ Copy ตัวแปร

การ Copy ตัวแปร Reference type จะเป็นการ copy ข้อมูล Pointer ที่จะชี้ไปหาข้อมูลจริงในหน่วยความจำอีกที ถ้ามีการเปลี่ยนแปลงข้อมูลของตัวแปรปลายทางต้นทางก็จะเปลี่ยนไปด้วย

การ Copy ตัวแปร Value type จะ copy ข้อมูลจริงทั้งชุด การเปลี่ยนข้อมูลตัวแปรปลายทาง ข้อมูลของตัวแปรต้นทางจะไม่เปลี่ยน

การนำไปใช้

Microsoft แนะนำว่า Struct จะใช้ในการ encapsulate ตัวแปรที่เกี่ยวข้องกันไว้ด้วยกัน เช่น ตัวแปรเกี่ยวกับการวาดรูปสี่เหลี่ยม struct สามารถสร้าง construct, constant, field, method, properties, indexers, operator, event และ nest types

struct นำมาใช้ เมื่อข้อมูลมีขนาดเล็ก และมีอายุสั้น และมักจะเอาไปใช้ใน object อีื่น

อย่างไรก็ตาม ถ้าหากข้อมูลมันมีความซับซ้อน และใช้ construct, constant, field etc หลายอัน แนะนำให้ใช้ class แทน

 

 

ref:

https://stackoverflow.com/questions/13049/whats-the-difference-between-struct-and-class-in-net

You may also like