Data Types ในภาษา C# ในภาษา C# “Data Type” (ชนิดข้อมูล) หมายถึง รูปแบบของข้อมูลที่ตัวแปรสามารถเก็บได้ ซึ่งกำหนดทั้ง “ชนิดของค่าที่เก็บ” (เช่น ตัวเลข ข้อความ จริง/เท็จ) และ “ขนาดหน่วยความจำ” ที่ใช้ในการเก็บข้อมูลนั้น
ทุกตัวแปรใน C# จำเป็นต้องมีชนิดข้อมูลกำกับเสมอ เพื่อให้คอมไพเลอร์ตรวจสอบได้ว่าข้อมูลที่เก็บเข้ากันได้หรือไม่ และเพื่อให้โปรแกรมใช้หน่วยความจำได้อย่างมีประสิทธิภาพ
ประเภทของ Data Types ในภาษา C#
ชนิดข้อมูลใน C# สามารถแบ่งได้เป็น 4 กลุ่มหลัก ได้แก่
| กลุ่มข้อมูล | ตัวอย่างชนิดข้อมูล | คำอธิบาย |
|---|---|---|
| 1. Value Types | int, float, double, bool, char | เก็บค่าจริงในหน่วยความจำโดยตรง |
| 2. Reference Types | string, array, class, object | เก็บ “ที่อยู่” ของข้อมูลในหน่วยความจำ |
| 3. Nullable Types | int?, double? | เก็บค่าได้ทั้ง “ค่าจริง” และ null |
| 4. Pointer Types | ใช้ใน unsafe code | ใช้เข้าถึงหน่วยความจำโดยตรง (มักใช้ในระบบระดับล่าง) |
ตัวอย่างการใช้ชนิดข้อมูลพื้นฐานใน C#
namespace MyConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
int age = 25; // ชนิดจำนวนเต็ม
double salary = 45800.75; // ชนิดทศนิยม
char grade = 'A'; // ชนิดอักขระ (ตัวอักษร)
bool isActive = true; // ชนิดตรรกะ (จริง/เท็จ)
string name = "สมชาย"; // ชนิดข้อความ (string)
Console.WriteLine($"ชื่อ: {name}");
Console.WriteLine($"อายุ: {age}");
Console.WriteLine($"เงินเดือน: {salary}");
Console.WriteLine($"เกรด: {grade}");
Console.WriteLine($"สถานะการทำงาน: {isActive}");
}
}
}int age = 25;→ เก็บจำนวนเต็ม (ไม่มีจุดทศนิยม)double salary = 45800.75;→ เก็บค่าทศนิยมสองตำแหน่งchar grade = 'A';→ เก็บตัวอักษรหนึ่งตัวbool isActive = true;→ ใช้เก็บค่าตรรกะ “จริง” หรือ “เท็จ”string name = "สมชาย";→ ใช้เก็บข้อความConsole.WriteLine(...)→ แสดงค่าตัวแปรทั้งหมด
Value Types vs Reference Types
| คุณสมบัติ | Value Type | Reference Type |
|---|---|---|
| การเก็บค่า | เก็บค่าจริงในหน่วยความจำ | เก็บตำแหน่งอ้างอิง (reference) |
| ตัวอย่าง | int, double, bool, char | string, object, array, class |
| การเปลี่ยนค่า | สร้างสำเนาใหม่เมื่อมีการคัดลอก | การคัดลอกหมายถึงแชร์ข้อมูลเดียวกัน |
| ความเร็ว | เร็วกว่าเล็กน้อย | ช้ากว่าเล็กน้อยเพราะผ่านการอ้างอิง |
การแปลงชนิดข้อมูล (Type Conversion)
C# อนุญาตให้แปลงชนิดข้อมูลได้ 2 แบบ คือ
Implicit Conversion (แปลงอัตโนมัติ)
ใช้เมื่อชนิดข้อมูลปลายทาง “กว้างกว่า” และไม่เสี่ยงต่อการสูญเสียข้อมูล เช่น
int a = 10;
double b = a; // แปลงอัตโนมัติจาก int → doubleExplicit Conversion (ต้องระบุเอง)
ใช้เมื่อมีโอกาสสูญเสียข้อมูล ต้องระบุชนิดชัดเจนด้วย (type) เช่น
double c = 9.75;
int d = (int)c; // แปลง double → int (ผลลัพธ์คือ 9)การใช้ชนิดข้อมูลร่วมกับ var
C# มีตัวช่วยคือคีย์เวิร์ด var ให้คอมไพเลอร์ “เดา” ชนิดข้อมูลจากค่าที่กำหนด เช่น
var city = "Bangkok"; // คอมไพเลอร์อนุมานว่าเป็น string
var year = 2025; // คอมไพเลอร์อนุมานว่าเป็น intแต่ var ต้องมีการกำหนดค่าเริ่มต้น (initializer) เสมอ มิฉะนั้นคอมไพเลอร์จะไม่รู้ชนิดของข้อมูล
ตารางสรุปชนิดข้อมูลพื้นฐานใน C#
| ชนิดข้อมูล | คำอธิบาย | ขนาดโดยประมาณ | ค่าช่วงที่เก็บได้ |
|---|---|---|---|
byte | จำนวนเต็มบวก | 1 byte | 0 ถึง 255 |
int | จำนวนเต็ม | 4 bytes | -2,147,483,648 ถึง 2,147,483,647 |
long | จำนวนเต็มขนาดใหญ่ | 8 bytes | ~±9.2×10¹⁸ |
float | ทศนิยมความแม่นยำเดียว | 4 bytes | ~±3.4×10³⁸ |
double | ทศนิยมความแม่นยำคู่ | 8 bytes | ~±1.7×10³⁰⁸ |
decimal | ทศนิยมความแม่นยำสูง (เชิงการเงิน) | 16 bytes | ~±7.9×10²⁸ |
char | ตัวอักษร 1 ตัว | 2 bytes | Unicode |
bool | จริง/เท็จ | 1 byte | true / false |
string | ข้อความ | ขึ้นอยู่กับความยาว | – |
object | ชนิดพื้นฐานของทุกชนิด | – | เก็บข้อมูลใดก็ได้ |
เคล็ดลับการเลือกใช้ Data Type ที่เหมาะสม
- ใช้
intสำหรับค่าจำนวนเต็มทั่วไป - ใช้
doubleหรือdecimalสำหรับค่าทศนิยม (โดยเฉพาะงานคำนวณทางการเงินใช้decimal) - ใช้
stringสำหรับข้อความ - ใช้
boolสำหรับเงื่อนไข (true/false) - ใช้
varเฉพาะกรณีที่โค้ดอ่านง่ายและคาดเดาได้ชัดเจน
Data Types คือหัวใจของภาษา C# เพราะช่วยให้โปรแกรมรู้จักข้อมูลของตัวเอง การเลือกชนิดข้อมูลให้ถูกต้องช่วยให้โค้ดทำงานได้อย่างถูกต้อง และยังช่วยเพิ่มประสิทธิภาพ ลดการใช้หน่วยความจำ และทำให้การแปลงค่าระหว่างชนิดต่าง ๆ เป็นไปอย่างปลอดภัย
