Trang chủ C# cơ bản Kiểu dữ liệu Object và Dynamic trong C#

Kiểu dữ liệu Object và Dynamic trong C#

Nguyễn Dương 07-06-2024

Trong bài kiểu dữ liệu, mình có đề cập đến kiểu dữ liệu tham chiếu, trong đó có các kiểu dữ liệu Object, Dynamic, String. 
Kiểu String thì chắc các bạn đã nắm được rồi, còn kiểu Object và Dynamic thì trong bài này chúng ta sẽ cùng tìm hiểu nhé.

1. OBJECT TRONG C#

Đây là kiểu dữ liệu cơ bản nhất của tất cả các kiểu dữ liệu trong .NET. Mọi kiểu dữ liệu đều được kế thừa từ System.Object nên kiểu object có thể gán mọi giá trị của các kiểu dữ liệu khác. Tuy nhiên trước khi gán giá trị nó cần được chuyển kiểu.
Kiểu dữ liệu object cung cấp một số phương thức ảo cho phép chúng ta overload để sử dụng. 

Một số phương thức tiêu biểu trong object:
Phương thức
Ý nghĩa
ToString()
Trả về kiểu chuỗi của đối tượng (chuyển từ 1 kiểu dữ liệu nào đó về chuỗi)
GetHashCode()
Trả về mã băm của đối tượng
Equals()
So sánh 2 đối tượng, trả về True nếu 2 đối tượng bằng nhau và ngược lại
GetType()
Trả về kiểu dữ liệu của đối tượng


Boxing trong C#

Boxing là quá trình chuyển dữ liệu từ kiểu giá trị sang kiểu tham chiếu.

Quá trình boxing được thực hiện như sau:
  • Khởi tạo một đối tượng trong vùng nhớ Heap 
  • Copy giá trị của biến có kiểu dữ liệu giá trị vào đối tượng này
 Quá trình boxing được thực hiện ngầm định.

Ví dụ: Gán biến giá trị kiểu int cho biến object
int a = 6;
object ObjectValue = a;


Unboxing trong C#

Unboxing là quá trình ngược lại với boxing, tức là đưa dữ liệu từ kiểu tham chiếu về kiểu giá trị.
Unboxing được thực hiện tường minh và thông qua cách ép kiểu tường minh.

Quá trình unboxing được thực hiện như sau:
  • Kiểm tra xem đối tượng cần unboxing có thuộc đúng kiểu dữ liệu đưa ra hay không.
  • Nếu đúng thì copy giá trị của đối tượng sang biến dữ liệu kiểu giá trị. Ngược lại thì thông báo lỗi.
Ví dụ:
int a = 6;
object ObjectValue = a;
int NewValue = (int)ObjectValue;

Sơ đồ minh họa quy trình boxing và unboxing:
Object và Dynamic trong C#

Từ khóa var trong C#

var là từ khóa hỗ trợ khai báo biến mà không cần kiểu dữ liệu, kiểu dữ liệu sẽ được xác định khi gán giá trị cho biến, lúc đó chương trình sẽ tự ép kiểu cho biến.
var chỉ là từ khóa dùng để khai báo biến không phải là một kiểu dữ liệu.
- Bắt buộc phải gán giá trị ngay khi khởi tạo biến và không thể khởi tạo giá trị null cho biến var.
- Khai báo biến bằng từ khóa var thường được ứng dụng trong duyệt mảng bằng foreach, truy vấn LinQ

Ví dụ:
var a = "Hello World";
Console.Write(a);
Console.ReadLine();


2. DYNAMIC TRONG C#

Đây là một kiểu dữ liệu mới được đưa vào trong C# thời đại 4.0. Ta có lưu mọi kiểu giá trị trong biến kiểu dynamic. Đối tượng thuộc kiểu này sẽ không xác định được kiểu dữ liệu cho đến khi chương trình được thực thi.
Ta khai báo kiểu dynamic như khai báo biến bình thường:
dynamic <tên biến>; hoặc dynamic <tên biến> = <giá trị>;

Lưu ý là đối tượng thuộc kiểu này sẽ không xác định được kiểu dữ liệu cho đến khi chương trình được thực thi. Tức nghĩa là trình biên dịch sẽ bỏ qua tất cả lỗi về cú pháp, việc kiểm tra này sẽ thực hiện khi chương trình thực thi.

Ví dụ:
string a = "quantrimaytinh.com";
dynamic b = a;
Console.Write(b);
Console.ReadLine();

Bài viết liên quan

Hàm đệ quy trong C# Hàm đệ quy trong C#
enum trong C# enum trong C#
Struct trong C# Struct trong C#
Lớp String trong C# Lớp String trong C#
Vòng lặp foreach trong C# Vòng lặp foreach trong C#
Mảng đa chiều, mảng của mảng trong C# Mảng đa chiều, mảng của mảng trong C#