Trang chủ > Uncategorized > Linh tinh về dynamic trong C#

Linh tinh về dynamic trong C#

Tháng Mười 2, 2010 Để lại bình luận Go to comments

Dưới đây là vài điểm đáng chú ý liên quan đến kiểu dynamic trong C# được trình bày trong buổi thảo luận với hai developer của Microsoft, theo trình tự thời gian. Ở đây không nói đến hiện thực bên trong, vì HM không nắm rõ.

  • Lí do khiến dynamic được đưa vào C# là để làm việc với COM (chú ý là cả COM cũng phải được “tân trang” thì mới tận dụng được dynamic), và các ngôn ngữ dynamic như Ruby, Python được đơn giản hơn. Các ứng dụng phát sinh thêm như ở đây không phải là lí do chính thức.
  • dynamic là một built-in type như int và float, chứ không phải một syntax mới. Các biến dynamic cũng là object. Với các biến kiểu dynamic, trình biên dịch C# sẽ không thực hiện kiểm tra kiểu lúc biên dịch mà chỉ đóng gói các thông tin cần thiết để phân giải lúc runtime lời gọi các method của dynamic object. Lí do đằng sau thiết kế này là Microsoft không muốn thay đổi tính chất static typing của C#, và cũng không muốn lập trình viên dùng dynamic một cách không có chủ ý.
  • dynamic là một contextual keyword (bạn thử khai báo int dynamic = 1; xem).
  • dynamic dùng các dịch vụ của Dynamic Language Runtime (DLR). DLR là thư viện (chứ không phải runtime như CLR, mặc dù tên gọi có từ “runtime”) cung cấp các dịch vụ cần thiết khi xây dựng các ngôn ngữ dynamic trên nền .NET. Có thể coi dynamic là syntactic sugar để sử dụng DLR trong C#. Khi các ngôn ngữ dynamic trên nền .NET sử dụng DLR, việc cộng tác với nhau sẽ đơn giản hơn.
  • Dynamic object expose các method, property vào lúc runtime, nói cách khác, nó có thể tự dispatch thông điệp gửi đến nó. Khi gán một object cho biến kiểu dynamic, trình dịch wrap các object này vào các dynamic object.
  • Lập trình viên C# có thể lựa chọn dùng hoặc không dùng dynamic khi làm việc với COM và các ngôn ngữ dynamic. Điều này phụ thuộc vào sở thích.

Tham khảo blog của hai lập trình viên này ở đâyở đây nếu muốn biết sâu hơn về dynamic (có thể dùng thay thuốc ngủ :D).

Tags:
  1. Chưa có phản hồi.
  1. No trackbacks yet.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: