Kiểu Vô Danh Và Kiểu động Dynamic Trong C# C Sharp

Kiểu vô danh C#

Kiểu vô danh (Anonymous Type) - là kiểu không có tên. C# cho phép bạn tạo ra các đối tượng kiểu vô danh bằng từ khóa new, cú pháp cơ bản để tạo ra đối tượng có kiểu vô danh như sau:

var obj = new { thuoctinh1 = giatri1, thuoctinh2 = giatri2 }

Bằng cú pháp như vậy, tạo ra được đối tượng chứa các thuộc tính (chú ý - thuộc tính là chỉ đọc), bạn tạo ra đối tượng mà không cần phải khai báo lớp

Ví dụ: tạo đối tượng có 3 thuộc tính

var myProfile = new { name = "XuanThuLab", age = 20, skill = "ABC" };

Để truy cập thuộc tính của toán tử vẫn dùng ký hiệu . và tên thuộc tính.

Console.WriteLine(myProfile.name);

Kiểu vô danh Anonymous Type - được dùng phổ biến trong LINQ (tìm hiểu phần sau)

Khi có đối tượng kiểu vô danh, nếu dùng nó truyền như tham số cho các phương thức - coi nó như các object có thể gây lỗi khi buil ứng dụng - trình biên dịch kiểm tra và báo lỗi. Để giải quyết vấn đề này có thể dùng đến khai báo kiểu dynamic

Kiểu động - dynamic

Biến kiểu động - ngầm định - khai báo với từ khóa dynamic, thì kiểu thực sự của biến đó được xác định bằng đối tượng gán vào ở thời điểm chạy (khác với kiểu ngầm định var kiểu xác định ngay thời điểm biên dịch)

dynamic myvar; Ví dụ khai báo phương thức có sử dụng tham số kiểu dynamic static void TestFunc(dynamic dvar) { Console.WriteLine(dvar.age); // ở thời điểm biên dịch - không biết dvar có thuộc tính age hay không, nhưng nó vẫn biên dịch }

Với phương thức trên, ở thời điểm chạy mà đối tượng ở tham số có thuộc tính age thì sẽ không lỗi, còn nếu không có thuộc tính age sẽ sinh ngoại lệ.

var myProfile = new { name = "XuanThuLab", age = 20, skill = "ABC" }; TestFunc(myProfile); // In ra 20

Bạn có thể dùng kiểu động này với kiểu dữ liệu bất kỳ

dynamic d1 = 7; dynamic d2 = "a string"; dynamic d3 = System.DateTime.Today; dynamic d4 = System.Diagnostics.Process.GetProcesses();

Source code: CS008_Anonymous (Git), hoặc tải cs008-dynamic

ĐĂNG KÝ KÊNH, XEM CÁC VIDEO TRÊN XUANTHULAB Đăng ký nhận bài viết mới

Từ khóa » Dynamic Là Gì C#