Tìm hiểu Value Types and Reference Types

Kiểu biến và kiểu tham chiếu là những khái niệm rất cơ bản và quan trọng trong ngôn ngữ lập trình . NET.

A. Value Type

1. Variables

Khi bạn khai báo một biến, nó được cấp phát một chỗ trên bộ nhớ Ram. Vùng nhớ của biến lúc này có 3 thành phần: Kiểu của biến (Type), tên của biến (Name) và giá trị của biến đó (Value)

Kiểu: là từ khóa được dùng để xác định loại giá trị của biến. Mỗi kiểu giá trị đều có giới hạn mặc định
Biến là tên do người lập trình đặt ra được sử dụng để đại diện cho dữ liệu trong thời gian thực hiện chương trình.
Giá trị: Chính là dữ liệu của biến đó đại diện 

Như hình trên, ta có biến a với kiểu dữ liệu là int và ta gán giá trị cho nó là 5. Bạn cần biết rằng trong C# biến được lưu trữ qua hai cách là Stack và Heap.
Stack dùng tham số (parameters) và địa chỉ biến, hoặc thêm một số thông tin khác. Nó  thường dùng cho Value Types. Ngược lại Heap được dùng lưu trữ các đối tượng của Reference Types

2. Bảng giá trị của các Value Type trong C#

Type Thể Hiện Kiểu Phạm Vi Giá Trị Mặc Định
bool Boolean value True or False False
byte 8-bit unsigned integer 0 to 255 0
char 16-bit Unicode character U +0000 to U +ffff ‘\0’
decimal 128-bit precise decimal values with 28-29 significant digits (-7.9 x 1028 to 7.9 x 1028) / 100 to 28 0.0M
double 64-bit double-precision floating point type (+/-)5.0 x 10-324 to (+/-)1.7 x 10308 0.0D
float 32-bit single-precision floating point type -3.4 x 1038 to + 3.4 x 1038 0.0F
int 32-bit signed integer type -2,147,483,648 to 2,147,483,647 0
long 64-bit signed integer type -923,372,036,854,775,808 to 9,223,372,036,854,775,807 0L
sbyte 8-bit signed integer type -128 to 127 0
short 16-bit signed integer type -32,768 to 32,767 0
uint 32-bit unsigned integer type 0 to 4,294,967,295 0
ulong 64-bit unsigned integer type 0 to 18,446,744,073,709,551,615 0
ushort 16-bit unsigned integer type 0 to 65,535 0

   
Tất cả các kiểu dữ liệu số đều được gọi là Value Type, ngoài ra còn có Char, Date, Boolean, Struct, Enum . . .

 

B. Reference Types

Một kiểu tham chiếu chứa một con trỏ đến một vị trí bộ nhớ chứa dữ liệu.

Reference Types Notes
Class Các đối tượng từ một class là một kiểu tham chiếu
Interface Nó có thể là cả hai kiểu, một lời gọi virtual cho reference type hoặc lời gọi static cho value type.
Delegate Một loại delegate thường dùng để đại diện cho một phương pháp nào đó
Array Mảng là kiểu tham chiếu dù các giá trị trong mảng là kiểu giá trị
String Một chuỗi cũng là dạng tham chiếu vì nó bắt nguồn từ classes

Đối với kiểu dữ liệu tham chiếu, nó sẽ sử dụng cả hai bộ nhớ Stack và Heap. Chúng ta sẽ tìm hiểu hai loại bộ nhớ này ở phần sau.

Leave a comment