# 15.Value type vs Reference type

💬 ในรอบนี้เราจะมาทำความรู้จักกับชนิดของข้อมูลของเราให้ลึกซึ้งยิ่งๆขึ้นไปอีกขั้นนะฮ๊าฟ ซึ่งเวลาที่เรากำหนดชนิดของข้อมูล int, double, string, bool อะไรพวกนี้ จริงๆในเบื้องลึกเขาแบ่งกลุ่มของพวกนี้ไว้ทั้ง 2 แบบนะครับนั่นคือ **Value type** กับ **Reference type** ส่วนมันคืออะไรและต่างกันยังไง ลองกดดูวีดีโอกันเบย

{% embed url="<https://www.youtube.com/watch?v=ug2Sve3B03o&list=PLUjAn8nwWnijERZ3HpzBk7NfSrau74_lQ&index=30>" %}

## 🎯 สรุปสั้นๆ

### 👨‍🚀 Value type

ชนิดข้อมูลพื้นฐานที่เรานิยมใช้กันเช่น int, double, bool อะไรพวกนี้อยู่ในกลุ่มของ value type นะครับ ซึ่งลักษณะเฉพาะตัวของกลุ่มนี้คือ ตัวแปรแต่ละตัวเวลามันเก็บข้อมูลมันจะเก็บแยกของใครของมัน แยกขาดจากกันเลย ไม่เกี่ยวข้องกันเลย

### 👨‍🚀 Reference type

ชนิดข้อมูลส่วนใหญ่ที่อยู่ในกลุ่มนี้จะเป็นพวก class ต่างๆและรวมถึง string ด้วย ซึ่งลักษณะเฉพาะตัวของกลุ่มนี้คือ ตัวแปรแต่ละตัวมันจะไม่เก็บข้อมูลไว้ แต่มันใช้การชี้ไปยังข้อมูลแทน ซึ่งตัวแปรต่างกันก็สามารถชี้ไปที่ข้อมูลตัวเดียวกันได้ ดังนั้นเวลาเวลามีการแก้ไขข้อมูลมันก็จะทำให้ตัวแปรที่ชี้มาหาข้อมูลเดียวกันมีผลกระทบไปด้วย

{% hint style="info" %}
**Immutable of string**\
หลายคนพอได้ยินว่า string นั้นอยู่ในกลุ่มของ Reference type ก็เลยไปลองเล่นดู แต่พอลองดูจะพบว่าพฤติกรรมของมันจะเหมือนกับ value type มากกว่า เพราะเวลาให้ตัวแปรอื่นไปแก้ไขข้อมูลจะพบว่าอีกตัวแปรนึงไม่เปลี่ยนตาม นั่นก็เพราะ ตอนที่เราไปแก้ไขข้อมูลของ string จริงๆนั้นเราทำไม่ได้ เพราะ string มีลักษณะเฉพาะตัวอีกข้อคือสิ่งที่เรียกว่า **Immutable** ซึ่งความหมายของ immutable ผมขอยกไปอยู่ในบทของ string อีกทีละกันครับ
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.saladpuk.com/beginner-1/csharp101/intermediate/value-vs-reference.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
