Chuyển đến nội dung chính

Boxing and Unboxing in C#


Mọi kiểu dữ liệu, dựng sẵn hay do người dùng định nghĩa, đều được lấy từ một lớp cơ bản là System.Object. Do đó việc đóng gói những kiểu căn bản hay nguyên thủy vào trong class Object được gọi là boxing, và thao tác ngược lại được gọi là unboxing.

1. Boxing

Bạn có thể dễ dàng hình dung quá trình này thông qua tên gọi của nó, nghĩa là một giá trị được đưa
vào bên trong một đối tượng. Nói cách khác, boxing là những xử lý cho phép kiểu dữ liệu giá trị như
(int, unint, long…) được sử dụng như kiểu tham chiếu ( các đối tượng). Và quá trình boxing được thực hiện ngầm định. Bạn hãy xem hình dưới minh họa về quá trình boxing một số nguyên:

Đây là chương trình minh họa quá trình trên.

using System;
class Boxing
{
     public static void Main()
     {
         int i = 123;
         object o = i;
         Console.WriteLine("The object value = {0}", o);
         Console.ReadLine();
     }
}


2.Unboxing

Unboxing là quá trình ngược lại với boxing, tức là đưa từ một đối tượng ra một giá trị . Quá trình
này sẽ được thực hiện một cách tường minh. Và để thực hiện được điều này bạn cần chắc chắn rằng
đối tượng đã được boxing đúng kiểu giá trị đưa ra và sao chép giá trị từ thể hiện hay đối tượng vào 
biến kiểu giá trị. Hình dưới đây mô tả quá trình unboxing. Như bạn thấy nó ngược lại với quá trình
boxing ở trên.
Đây là chương trình minh họa cả quá trình boxing và unboxing:
using System;
public class Unboxing
{
     public static void Main()
     {
         int i = 123;
         // Boxing
         object o = i;
         // Unboxing phải được thực hiện tường minh tường minh
         int k = (int) o;
         Console.WriteLine("k: {0}", k);
     }
}

Đối với Unboxing các kiểu giá trị thành công trong thời gian chạy. Các item đang được mở gói (unboxed) phải là một tham chiếu đến một đối tượng mà trước đây được tạo ra bởi boxing (một phiên bản của kiểu tham trị). Cố gắng unbox null là nguyên nhân của một NullReferenceException. Cố gắng unbox một tham chiếu đến một giá trị không tương thích gây ra một InvalidCastException.


Nhận xét

Bài đăng phổ biến từ blog này

Vẽ UML trong Visual Studio 2015

I. Giới thiệu       Hiện nay có rất nhiều công cụ để mô hình hóa trong đó có UML với các công cụ như: PowerDesigner, Visio, Draw.io,... Nhưng các công cụ này đều phải có bản quyền và hơn hết phải cài đặt thêm khá nặng máy. Ít ai biết đến bộ công cụ vẽ UML có sẵn trong Visual Studio. Vì dân IT hầu như ai cũng có sử dụng nó và hiện giờ đã có bản Visual Studio Community miễn phí cho tất cả các lập trình viên. Vậy chúng ta sẽ tìm hiểu cách vẽ UML trong Visual Studio nhé.

SmartGIT

Hướng dẫn cài đặt GIT Nói chung  Team Foundation Server  trong Visual Studio khá tốt và có nhiều tính năng hay. Nhưng lại giới hạn người dùng. Nếu team bạn nhiều hơn 5 người thì có thể xài GIT vậy. Được cái tất cả là Free.