Kiểu dữ liệu Object trong C#

Khóa học lập trình C# căn bản

5.0 (2 đánh giá)
Tạo bởi Trần Thành Vi Thanh Cập nhật lần cuối 22:15 22-03-2019 39.605 lượt xem 7 bình luận
Học nhanh

Danh sách bài học

Kiểu dữ liệu Object trong C#

Dẫn nhập

Ở bài KIỂU DỮ LIỆU TRONG C# chúng ta có đề cập đến một kiểu dữ liệu tham chiếu đó là kiểu dữ liệu object. Trong bài học này chúng ta sẽ cùng tìm hiểu chi tiết về kiểu dữ liệu này.


Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  •  Khái niệm về kiểu dữ liệu object.
  •  Boxing và unboxing trong C#.
  •  Từ khóa var trong C#.

Khái niệm về kiểu dữ liệu object

Kiểu dữ liệu object:

  •  Là một kiểu dữ liệu cơ bản 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 (khái niệm về kế thừa sẽ được trình bày trong bài TÍNH KẾ THỪA TRONG C#).
  •  Thuộc kiểu dữ liệu tham chiếu (đã trình bày ở bài KIỂU DỮ LIỆU TRONG C#).

Kiểu dữ liệu object cung cấp một số phương thức ảo cho phép mình overload để sử dụng (những khái niệm này sẽ được trình bày trong bài TÍNH KẾ THỪA TRONG C#)

  •  Một số phương thức tiêu biểu nằm trong object:

  •  Ở bài học này chúng ta chỉ tìm hiểu các phương thức trên ở mức khái niệm. Trong các bài học sau sẽ ứng dụng vào ví dụ, khi đó sẽ có giải thích chi tiết về các phương thức trên.

Boxing và unboxing trong C#

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

  •  Quá trình boxing:
    •  Khởi tạo một đối tượng trong vùng nhớ Heap (đã được trình bày trong bài KIỂU DỮ LIỆU TRONG C#).
    • 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ụ:

// Khởi tạo biến Value kiểu int (kiểu dữ liệu giá trị)
            int Value = 109; 

            /* thực hiện boxing bằng cách:
             * Khởi tạo đối tượng ObjectValue kiểu object 
             * Gán giá trị của biến Value vào ObjectValue */
            object ObjectValue = Value; 
  • Như phần trước mình đã trình bày là mọi kiểu dữ liệu đều kế thừa từ lớp System.Object nên có thể gán giá trị của kiểu dẫn xuất cho kiểu dữ liệu cha (sẽ được trình bày trong bài TÍNH KẾ THỪA TRONG C#). Trong ví dụ là biến kiểu int gán giá trị cho biến kiểu object.

Unboxing là quá trình ngược lại với boxing, tức là đưa dữ liệu từ kiểu dữ liệu tham chiếu về kiểu dữ liệu giá trị.

  •  Unboxing được thực hiện tường minh và thông qua cách ép kiểu tường minh (đã được trình bày trong bài ÉP KIỂU TRONG C#).
  •  Phải chắc chắn rằng đối tượng cần boxing thuộc đúng kiểu dữ liệu đưa ra. Nếu không việc unboxing sẽ báo lỗi chương trình.
  •  Quá trình unboxing:
    • Kiểm tra xem đối tượng cần un-boxing có thuộc đúng kiểu dữ liệu đưa ra hay không.
    • Nếu đúng thì thực hiện 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 Value = 109; 

            // Boxing
            object ObjectValue = Value;

            /* thực hiện unboxing bằng cách: 
             * Kiểm tra dữ liệu biến ObjectValue thấy thuộc đúng kiểu int. 
             * Gán giá trị của biến ObjectValue vào biến NewValue bằng cách ép kiểu tường minh. 
             * Biến NewValue sẽ mang giá trị là 109*/
            int NewValue = (int)ObjectValue; 

Việc boxing và unboxing có thể mình họa bằng hình ảnh sau:

kteam


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.

Những lưu ý khi sử dụng từ khóa var:

  •  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.
// Lỗi vì chưa khởi tạo giá trị cho biến varInt.
            var varInt;

            // Lỗi vì không được khởi tạo giá trị null cho biến varString.
            var varString = null;

            // Lỗi vì phải khởi tạo giá trị ngay khi khai báo
            var varLong;
            varLong = 109;

            // Khai báo đúng!
            var varBool = true;
  •  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.

Khai báo biến bằng từ khóa var thường được ứng dụng trong:

Ví dụ minh họa sử dụng từ khóa var:

/* Vì biến StringVariable được khởi tạo giá trị kiểu chuỗi 
             * nên trình biên dịch sẽ hiểu biến này như là biến kiểu string.
             */
            var varString = "HowKteam";
            // Khai báo tường minh biến kiểu string
            string Content = "HowKteam";
            
            // In giá trị của biến StringVariable và biến Content
            Console.WriteLine(varString);
            Console.WriteLine(Content);
  • Kết quả khi chạy chương trình trên:

kteam

 Ở bài này mình chỉ ví dụ đơn giản cho các bạn hiểu về var. Ứng dụng thực sự của nó sẽ được trình bày ở các bài sau.


Kết luận

Nội dung bài này giúp các bạn nắm được:

  •  Khái niệm về kiểu dữ liệu object.
  •  Boxing và unboxing trong C#.
  •  Từ khóa var trong C#.

Bài học sau chúng ta sẽ cùng tìm hiểu một khái niệm tiếp theo đó là KIỂU DỮ LIỆU DYNAMIC TRONG C#

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Kiểu dữ liệu Object trong C# dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả

Mỗi buổi sáng thức dậy, bạn có 2 lựa chọn, tiếp tục ngủ để mơ những giấc mơ hoặc thức dậy và theo đuổi chúng!

Khóa học

Khóa học lập trình C# căn bản

Bạn mới bắt đầu học lập trình? Bạn đang muốn học thêm ngôn ngữ lập trình mới? C# là lựa chọn hoàn hảo để đáp ứng các nhu cầu trên.

Ngôn ngữ C# là một ngôn ngữ mới, cấu trúc rõ ràng, dễ hiểu và dễ học. C# thừa hưởng những ưu việt từ ngôn ngữ Java, C, C++ cũng như khắc phục được những hạn chế của các ngôn ngữ này. C# là ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, được xây dựng dựa trên C++ và Java.

Khoá học lần này sẽ mang đến toàn bộ những kiến thức cơ bản về C#. Chào mừng các bạn đã đến với khoá học LẬP TRÌNH C# CƠ BẢN của Kteam.

Đánh giá

donhan196 đã đánh giá 15:18 02-03-2019

Anh Nguyen đã đánh giá 19:38 01-03-2019

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
PHAMPHUHUNG đã bình luận 18:38 05-02-2018

bài tính kế thừa ở đâu z ạ?

 

MinMin đã bình luận 16:22 26-12-2017

Có bài thì dễ hiểu có bài khó hiểu quá. Cần nhiều bài tập và VD hơn 

tbtoanst đã bình luận 11:49 03-12-2017

Bạn đã sai trong phương pháp dạy. Dạy theo kiểu truyền thống khó hiểu lắm. Ví dụ như vậy khó hiểu lắm. Áp dụng thực hành nhiều hơn mới hiểu. Học lập trình mà

tbtoanst đã bình luận 11:44 03-12-2017

Bạn không cần phải nêu định nghĩa nhiều quá đâu. Nên dạy và áp dụng trên code trong những ví dụ thực tế thì nó dễ hiểu hơn.

truongngoclam.1997 đã bình luận 01:33 20-02-2017
cho mình hỏi là object dùng trong trong trường hợp cụ thể nào vậy ?
Không có video.