Unsafe code trong C#

0
87

C# cho phép sử dụng các biến con trỏ trong một hàm của khối code khi nó được đánh dấu bởi unsafe modifier. Khái niệm unsafe code hoặc unmanaged code trong C# là một khối code mà sử dụng một biến con trỏ.

Cách compile unsafe code trong Visual Studio 2010

Để biên dịch và chạy các chương trình trong chế độ /unsafe, bạn chỉ cần click chuột phải vào Project, sau đó chọn Properties –> Build –> Allow unsafe code rồi nhấn tổ hợp phímCtrl + S để lưu các thay đổi như trong hình:

Unsafe code trong C#Con trỏ (Pointer) trong C#

Một con trỏ là một biến mà có giá trị là địa chỉ của biến khác, ví dụ: địa chỉ trực tiếp của vị trí bộ nhớ. Tương tự như bất kỳ biến hoặc hằng khác trong C#, bạn phải khai báo một con trỏ trước khi bạn có thể sử dụng nó để lưu giữ bất kỳ địa chỉ biến nào.

Form chung của một khai báo con trỏ trong C# là:

Dưới đây là các khai báo con trỏ hợp lệ trong C#:

Ví dụ sau minh họa sự sử dụng của con trỏ, sử dụng unsafe modifier trong C#:

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

Con trỏ trong C#

Thu hồi giá trị dữ liệu bởi sử dụng con trỏ trong C#

Bạn có thể thu hồi dữ liệu đã được lưu giữ tại vị trí được tham chiếu bởi biến con trỏ, sử dụng phương thức ToString() trong C#. Đây là ví dụ minh họa:

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

Unsafe code trong C#

Truyền Con trỏ như là các Tham số tới phương thức trong C#

Bạn có thể truyền một biến con trỏ tới một phương thức dưới dạng các tham số. Đây là ví dụ minh họa:

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

Truyền con trỏ như là tham số trong C#

Truy cập các phần tử mảng bởi sử dụng một con trỏ trong C#

Trong C#, một tên mảng và một con trỏ tới cùng kiểu dữ liệu ở dạng dữ liệu mảng, là không cùng kiểu biến. Ví dụ, int *p và int[] p, là không cùng kiểu. Bạn có thể lượng gia biến con trỏ p bởi vì nó không là cố định trong bộ nhớ, nhưng một địa chỉ mảng là cố định trong bộ nhớ, và bạn không thể lượng gia nó.

Vì thế, nếu bạn cần truy cập một dữ liệu mảng bởi sử dụng một biến con trỏ, như khi chúng ta đã làm trong C hoặc C++ (bạn có thể kiểm tra: Con trỏ trong C), bạn cần cố định con trỏ đó bởi sử dụng từ khóa fixed trong C#.

Sau đây là ví dụ minh họa:

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

Unsafe code trong C#

Chúc bạn thành công!

LEAVE A REPLY