Trong C#, kiểu dữ liệu chia làm 3 loại chính: Value type, Reference type, và Pointer type (chỉ trong unsafe context).
Value Types (Kiểu giá trị)
Biến value type lưu trực tiếp giá trị. Kế thừa từ System.ValueType. Được cấp phát trên stack (thường).
| Kiểu | Diễn tả | Phạm vi | Mặc định |
|---|---|---|---|
| bool | Boolean | True/False | False |
| byte | 8-bit unsigned | 0-255 | 0 |
| char | 16-bit Unicode | U+0000 - U+FFFF | '\0' |
| decimal | 128-bit precise | ±7.9×10²⁸ / 10⁰⁻²⁸ | 0.0M |
| double | 64-bit float | ±5.0×10⁻³²⁴ - ±1.7×10³⁰⁸ | 0.0D |
| float | 32-bit float | ±3.4×10³⁸ | 0.0F |
| int | 32-bit signed | -2.147B - 2.147B | 0 |
| long | 64-bit signed | ±9.22×10¹⁸ | 0L |
| sbyte | 8-bit signed | -128 - 127 | 0 |
| short | 16-bit signed | -32.768 - 32.767 | 0 |
| uint | 32-bit unsigned | 0 - 4.29B | 0 |
| ulong | 64-bit unsigned | 0 - 1.84×10¹⁹ | 0 |
| ushort | 16-bit unsigned | 0 - 65.535 | 0 |
| struct | Cấu trúc tùy chỉnh | - | - |
| enum | Liệt kê | - | - |
Reference Types (Kiểu tham chiếu)
Biến reference type lưu địa chỉ (tham chiếu) đến đối tượng trên heap. Mặc định là null.
- Object Type: Base class cho mọi kiểu trong CTS.
- Dynamic Type:
dynamic- kiểm tra kiểu tại runtime. - String Type:
string- alias củaSystem.String, immutable. - Class Type: Lớp do người dùng định nghĩa.
- Interface Type: Giao diện.
- Array Type: Mảng.
- Delegate Type: Delegate.
Pointer Types (Chỉ unsafe context)
int* p, char* c - dùng trong block unsafe.