Read the previous article about C# Advanced: C# Advanced (Series #1)
- C# – Anonymous Types
- C# – Dynamic Types
- C# – Ternary Operator ?:
- C# Generics & Generic Constraints
- C# – Delegates
- C# – Func Delegate
- C# – Action Delegate
- C# – Anonymous Method
- C# – Events
- C# – Extension Method
- C# – HttpClient
C# – Dynamic Types
C# 4.0 (.NET 4.5) đã giới thiệu một kiểu mới gọi là dynamic để tránh việc kiểm tra kiểu compile-time. Kiểu dynamic thoát khỏi việc kiểm tra kiểu tại thời điểm biên dịch; thay vào đó, nó giải quyết type trong thời gian chạy.
Một biến kiểu dynamic được xác định bằng từ khóa dynamic
Trình biên dịch biên dịch các kiểu dynamic thành các kiểu object trong hầu hết các trường hợp. Tuy nhiên, loại thực tế của biến loại dynamic sẽ được giải quyết trong thời gian chạy (run-time).
Dynamic types thay đổi loại trong thời gian chạy dựa trên giá trị được chỉ định. Ví dụ sau đây cho thấy cách biến dynamic thay đổi loại dựa trên giá trị được chỉ định.
Các biến kiểu dynamic được ngầm chuyển đổi sang các kiểu khác.
Phương thức và tham số
Nếu bạn gán một class object cho kiểu dynamic thì trình biên dịch sẽ không kiểm tra các phương thức và tên thuộc tính chính xác của kiểu dynamic chứa class object tùy chỉnh. Hãy xem xét ví dụ sau.
Trong ví dụ trên, trình biên dịch C# không kiểm tra số lượng tham số, loại tham số hoặc không tồn tại. Nó xác thực những thứ này trong thời gian chạy và nếu nó không hợp lệ thì sẽ đưa ra một ngoại lệ trong thời gian chạy. Lưu ý rằng Visual Studio IntelliSense không được hỗ trợ cho các loại dynamic.