15.Value type vs Reference type
Last updated
Last updated
💬 ในรอบนี้เราจะมาทำความรู้จักกับชนิดของข้อมูลของเราให้ลึกซึ้งยิ่งๆขึ้นไปอีกขั้นนะฮ๊าฟ ซึ่งเวลาที่เรากำหนดชนิดของข้อมูล int, double, string, bool อะไรพวกนี้ จริงๆในเบื้องลึกเขาแบ่งกลุ่มของพวกนี้ไว้ทั้ง 2 แบบนะครับนั่นคือ Value type กับ Reference type ส่วนมันคืออะไรและต่างกันยังไง ลองกดดูวีดีโอกันเบย
ชนิดข้อมูลพื้นฐานที่เรานิยมใช้กันเช่น int, double, bool อะไรพวกนี้อยู่ในกลุ่มของ value type นะครับ ซึ่งลักษณะเฉพาะตัวของกลุ่มนี้คือ ตัวแปรแต่ละตัวเวลามันเก็บข้อมูลมันจะเก็บแยกของใครของมัน แยกขาดจากกันเลย ไม่เกี่ยวข้องกันเลย
ชนิดข้อมูลส่วนใหญ่ที่อยู่ในกลุ่มนี้จะเป็นพวก class ต่างๆและรวมถึง string ด้วย ซึ่งลักษณะเฉพาะตัวของกลุ่มนี้คือ ตัวแปรแต่ละตัวมันจะไม่เก็บข้อมูลไว้ แต่มันใช้การชี้ไปยังข้อมูลแทน ซึ่งตัวแปรต่างกันก็สามารถชี้ไปที่ข้อมูลตัวเดียวกันได้ ดังนั้นเวลาเวลามีการแก้ไขข้อมูลมันก็จะทำให้ตัวแปรที่ชี้มาหาข้อมูลเดียวกันมีผลกระทบไปด้วย
Immutable of string หลายคนพอได้ยินว่า string นั้นอยู่ในกลุ่มของ Reference type ก็เลยไปลองเล่นดู แต่พอลองดูจะพบว่าพฤติกรรมของมันจะเหมือนกับ value type มากกว่า เพราะเวลาให้ตัวแปรอื่นไปแก้ไขข้อมูลจะพบว่าอีกตัวแปรนึงไม่เปลี่ยนตาม นั่นก็เพราะ ตอนที่เราไปแก้ไขข้อมูลของ string จริงๆนั้นเราทำไม่ได้ เพราะ string มีลักษณะเฉพาะตัวอีกข้อคือสิ่งที่เรียกว่า Immutable ซึ่งความหมายของ immutable ผมขอยกไปอยู่ในบทของ string อีกทีละกันครับ