Bài 10. Ép kiểu trong C#

0
2413
ép kiểu trong c
This entry is part [part not set] of 21 in the series Khóa học C# cơ bản

Trong bài học này, mình sẽ giới thiệu cho các bạn về cách để thực hiện ép kiểu trong C#. Việc ép kiểu trong một ngôn ngữ lập trình là điều cần thiết khi bạn phải liên tục chuyển đổi qua lại giữa các kiểu giữ liệu cho tiện xử lý. Vậy trong bài viết ngày hôm này chúng ta sẽ đi tìm hiểu về ép kiểu trong C# nhé !

Ép kiểu ngầm định

Ép kiểu ngầm định là cách ép kiểu đơn giản nhất trong C#. Việc ép kiểu ngầm định diễn ra tự động bởi trình biên dịch. Nhờ cách này chúng ta có thể chuyển đổi từ một kiểu dữ liệu sang một kiểu dữ liệu có kích thước lớn hơn.

Một ví dụ về ép kiểu ngầm định:

Chúng ta có thể thấy qua ví dụ. Việc ép kiểu ngầm định này sẽ thường thực hiện trên các biến số hay biến mang kiểu dữ liệu số học (xem lại trong Bài 4. Các kiểu dữ liệu trong C#).

Ép kiểu tường minh

Việc ép kiểu tưởng mình là việc sử dụng các từ khóa rõ ràng để chuyển đổi kiểu dữ liệu. Đối với cách ép kiểu này, chúng ta thường dùng nó để chuyển đổi qua lại giữa các kiểu dữ liệu tương tự nhau (thường là kiểu số học).

Cú pháp để sử dụng ép kiểu tường minh như sau:

Ví dụ về ép kiểu tường minh như sau:

Chương trình này cho ra kết quả:

Chương trình trên là một ví dụ cho việc ép kiểu tường minh, chương trình đã chuyển đổi giá trị của biến a mang giá trị kiểu double thành biến b mang giá trị là một số nguyên. Vì int là kiểu số nguyên không mang số phẩy động được nên giá trị của biến b sẽ là phần nguyên của a. Việc chuyển đổi từ số thực sang số nguyên cũng là một việc thường thấy trong lập trình.

Lưu ý: Việc ép kiểu để chuyển đổi từ kiểu này sang kiểu kia còn một mặt hạn chế là các bạn phải cực kỳ cần trọng trong việc chuyển đổi từ kiểu này sang một kiểu có kích thước bé hơn. Nếu như kiểu dữ liệu sau khi chuyển đổi có kích thước nhỏ hơn kiểu ban đầu thì chương trình sẽ cho ra kết quả bị sai lệch với ban đầu.

Chương trình này sẽ cho ra kết quả:

Lúc này vì kiểu byte có kích thước nhỏ hơn rất nhiều so với kiểu int (khoảng từ 0 tới 255) nên biến b sẽ không thể lưu trữ giá trị của biến a được nên đã cho ra một kết quả sai lệch là 16.

Khi chúng ta học về ép kiểu, chúng ta có thể dễ dàng sử dụng toán tử / một cách chính xác. Khi ta chưa biết gì về ép kiểu chúng ta chỉ biết rằng toán tử / sẽ cho ra kết quả là phần nguyên kết quả phép tính đó.

Chúng ta sẽ ép kiểu tường minh cho phép tính chia đó như sau:

Chương trình này sẽ cho ra kết quả:

Nhờ việc ép kiểu cho phép tính như vậy mà chúng ta có thể tính chính xác phép chia trong lập trình.

Ép kiểu sử dụng phương thức có sẵn

Trong ngôn ngữ lập trình C# việc chuyển đổi dữ liệu bằng phương thức đã được hỗ trợ sẵn các phương thức như Parse hay TryParse. Ngoài ra, các kiểu dữ liệu đã được định nghĩa hay do người dùng định nghĩa thì đều sẽ được hỗ trợ một phương thức nữa là ToString.

Trong phần này, mình sẽ chỉ giới thiệu 2 phương thức là ParseToString vì phương thức TryParse có liên quan tới từ khóa out sẽ được trình bày trong chương về Hàm.

Phương thức Parse

Đối với phương thức Parse cú pháp khai báo như sau:

Phương thức này sẽ chuyển đổi giá trị bên trong ô <giá trị> thành kiểu dữ liệu tương ứng ở ô <kiểu dữ liệu>.

Ví dụ sử dụng phương thức này:

Chương trình này cho ra kết quả:

Việc chúng ta nhín thấy số 246 tức là chúng ta đã chuyển đổi biến s từ dạng chuỗi kí tự thành số nguyên thành công. Giá trị của s"123" sau khi chuyển đổi qua phương thức Parse sẽ trở thành 123 kiểu số nguyên.

Phương thức ToString

Như mình đã nói ở phần trên phương thức ToString được hỗ trợ sẵn trong các kiểu dữ liệu đã được định nghĩa trong C#. Đối với các kiểu dữ liệu do người dùng định nghĩa, phương thức này vẫn được hỗ trợ, nhưng để phương thức này có thể trả ra kết quả chúng ta cần phải sử dụng tới khái niệm nạp chồng hàm sẽ không được trình bày ở đây.

Cú pháp sử dụng phương thức ToString:

Phương thức này sẽ trả về giá trị xây tương ứng với giá trị được đưa vào.

Chương trình này cho ra kết quả:

Chương trình này không cho ra kết quả của phép tính 0.33 + -7810 mà lại cho ra kết quả là 2 giá trị này nối đuôi nhau. Bởi vì chúng ta đã ép kiểu sang kiểu chuỗi kí tự nên phép + lúc này sẽ thêm giá trị của chuỗi kí tự sau lên chuỗi kí tự trước. Giá trị của s1 lúc này sẽ là "0.33" còn giá trị của s2 sẽ là "-7810".

Tổng kết

Như vậy là trong bài học ngày hôm nay, mình đã giới thiệu cho các bạn cách để thực hiện chuyển đổi qua lại giữa các kiểu dữ liệu trong C# (ép kiểu). Trong bài học tiếp theo mình sẽ trình bày về lớp String tức kiểu dữ liệu chuỗi kí tự. Cảm ơn bạn đã đọc bài viết này. Hãy tiếp tục đồng hành cùng Lập trình không khó trong các bài viết tiếp theo nhé !

(ngoài ra các bạn có thể tham khảo thêm về bài viết ép kiểu trên trang chủ của Microsoft tại đây).

Subscribe
Notify of
guest
0 Bình luận
Inline Feedbacks
View all comments