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

Serial tutorial hướng dẫn lập trình C# cơ bản

Kiểu dữ liệu Object trong C#. Kiểu dữ liệu Object trong C#. Kiểu dữ liệu Object trong C#. Kiểu dữ liệu Object trong C#. Kiểu dữ liệu Object trong C#. 4.8/5 (280 reviews)

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

Đã đăng 2016-09-19 02:07:11 bởi Trần Thành Vi Thanh
7 bình luận 32097 lượt xem
Kiểu dữ liệu Object trong C#. 4.8 /5 stars (10 reviews)
 

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:

  •  Duyệt mảng bằng foreach (sẽ trình bày trong bài FOREACH TRONG C# ).
  •  Truy vấn LinQ (sẽ trình bày trong bài LINQ TRONG C#).

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 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 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 like hoặc +1 Google để ủ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. 

 

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Kiểu dữ liệu Object trong C#.
PHAMPHUHUNG 2018-02-05 18:38:05

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

 

0 bình chọn
Reply
Kiểu dữ liệu Object trong C#.
MinMin 2017-12-26 16:22:54

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 

0 bình chọn
Reply
Kiểu dữ liệu Object trong C#.
tbtoanst 2017-12-03 11:49:15

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à

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
Tung Hoang 2018-04-11 16:58:29
Phải học khái niệm trước rồi mới tới ứng dụng được chứ bạn. Mình thấy cấu trúc bài học tương đối ổn, ngắn gọn, dễ hiểu.
0 bình chọn
Reply
Kiểu dữ liệu Object trong C#.
tbtoanst 2017-12-03 11:44:16

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.

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
JK666 2018-08-16 16:43:35
Theo mình phải nắm vững cái căn bản trước thì thực hành mới không phải bỡ ngỡ với mấy kiến thức căn bản, thực hành là khi cái nào khó quá làm ko nổi thì hướng dẫn thêm chứ căn bản mà chỉ đi chỉ lại thì rất mệt.
0 bình chọn
Reply
Kiểu dữ liệu Object trong C#.
truongngoclam.1997 2017-02-20 01:33:16
cho mình hỏi là object dùng trong trong trường hợp cụ thể nào vậy ?
0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education