Trang chủ Lập trình C# Phân biệt giữa biến kiểu object và biến kiểu dynamic
Lập trình C# 24/05/2017 18,204 lượt xem

Phân biệt giữa biến kiểu object và biến kiểu dynamic

Phân biệt giữa biến kiểu object và biến kiểu dynamic

Chúng ta thường thấu hầu hết các developer không phân biệt được sự khác nhau giữa biến kiểu object và dynamic trong C#. Tôi đã cố tìm các bài hướng dẫn trên web, nhưng không thể tìm thấy một lời giải hợp lý cho vấn đề này. Bài viết này sẽ giải thích vài điểm căn bản quan trọng về sự khác nhau giữa từ khóa object và dynamic trong C#.

Tổng quan, cả dynamic và object đều không được thực hiện việc kiểm tra kiểu khi biên dịch và được định danh kiểu của các biến lúc runtime tức là lúc chạy chương trình và cả 2 đều có thể được lưu giá trị thuộc kiểu bất kỳ. Object đươc giới thiệu trong C# 1.0. Sau đó tại sao dynamic lại được giới thiệu ở 4.0 khi mà object đã tồn tại rồi.

Các bạn hãy chú ý một số điểm khác biệt sau đây giữa biến kiểu object và dynamic trong C#:

Sự khác nhau số 1

  • Object: Trình biên dịch có 1 phần thông tin về kiểu của biến, đây không phải là kiểu biên dịch an toàn. 

    Ví dụ:

    Object
    Bạn cần chuyển đổi kiểu tường minh mọi lúc bạn muốn lấy giá trị của biến.
     
    object  a = "Rohatash Kumar";
    string a1 = a.ToString();

     
  • Dynamic: Trong biến dynamic, trình biên dịch không có bất cứ thông tin gì về kiểu của biến.
     
    dynamic  a = "Rohatash Kumar";
    string a1 = a;

     

Sự khác nhau số 2

  • Object: Được giới thiệu trong C# 1.0.
     
  • Dynamic: Được giới thiệu trong C# 4.0.

Sự khác nhau số 3 3

  • Object: Khi sử dụng một object, bạn cần chuyển kiểu biến object sang kiểu nguyên bản của nó để dùng trong các mục đích mong muốn. Trong sự khác nhau số 1, ví dụ dưới đây cho ra 1 lỗi.
     
    object  a = "Rohatash Kumar";
    string a1 = a;
    

    Nên bạn cần chuyển đổi kiểu mỗi khi bạn sử dụng nó
     
  • Dynamic:  Chuyển đổi kiểu không bắt buộc trừ khi bạn có thể cần biết các thuộc tính và phương thức liên quan đến kiểu dữ liệu.

Sự khác nhau số 4

  • Object: Khi bạn sử dụng từ khóa object với một biến, nó có thể sinh ra một vấn đề lúc thực thi nếu giá trị được lưu trữ không chuyển sang được kiểu dữ liệu tương ứng. Nó có thể không hiển thị lỗi ở lúc biên dịch nhưng nó sẽ hiển thị lỗi lúc thực thi.

    Ví dụ
     
    String a = "Rohatash Kumar";
    object a1 = a;
    int b = (int)a1;


    Bây giờ hãy thực thi đoạn code:

    Object Problem
  • Dynamic: Khi chúng ta sử dụng từ khóa dynamic, nó sẽ không xảy ra vấn đề vì trình biên dịch có tất cả thông tin về giá trị được lưu trữ.

Tổng kết

Object hữu ích khi bạn không có thêm thông tin về kiểu dữ liệu. Dynamic hữu ích khi bạn cần code sử dụng reflection hoặc ngôn ngữ động hoặc các đối tượng COM và khi lấy giá trị từ một câu truy vấn LinQ.

Trích nguồn từ: c-sharpcorner.com

Chia sẻ:

Bài viết liên quan

Tìm hiểu về các loại Collection trong C#
11/12/2024 Bạch Ngọc Toàn

Tìm hiểu về các loại Collection trong C#

Trong C#, collections là các cấu trúc dữ liệu được sử dụng để lưu trữ và quản lý các nhóm đối tượng. C# cung cấp nhiều loại collections khác nhau để phù hợp với các yêu cầu cụ thể của lập trình viên

Đọc thêm
Sử dụng mảng (Arrays)
11/12/2024 Bạch Ngọc Toàn

Sử dụng mảng (Arrays)

Mảng trong C# là một cấu trúc dữ liệu lưu trữ một dãy các phần tử có bộ nhớ nằm liên tiếp nhau và có kích thước cố đinh.

Đọc thêm
Lập trình hướng đối tượng
11/12/2024 Bạch Ngọc Toàn

Lập trình hướng đối tượng

Lập trình hướng đối tượng (Object Oriented Programing) hay còn gọi là OOP. Là một kỹ thuật lập trình cho phép các lập trình viên có thể ánh xạ các thực thể bên ngoài đời thực và trừu tượng hoá thành các class và object trong mã nguồn.

Đọc thêm
Vòng lặp (loop)
11/12/2024 Bạch Ngọc Toàn

Vòng lặp (loop)

Trong thực tế khi bạn cần thực thi một khối lệnh nhiều lần. Vòng lặp cho phép chúng ta thực thi một câu lệnh hoặc một khối lệnh nhiều lần.

Đọc thêm