SỐ 69
HỒ LÔ BIẾN
AI VB.NET HÔNG?
KIỂU BOOLEAN

[Chương Can Chíp]
 Kiểu Boolean của VB.NET có thể mang một trong 3 trị: 2 trị dành cho True và 1 trị dành cho False. Sở dĩ có 2 trị dành cho True (1 và -1) là vì VB6 sử dụng trị -1, còn các ngôn ngữ khác thì xài trị 1. Để dân lập trình khỏi kiểm tra mỗi biểu thức Boolean, VB.NET xài luôn 2 trị này.
 Rắc rối nằm ở chỗ: khi sử dụng trị True trong biểu thức lô-gích, nó bằng -1. Nhưng nếu trị này được chuyển đổi thành bất kỳ dạng thức nào khác, nó lại là 1.
 Phần khai báo như đoạn mã 1 là cách lập trình không tốt. Nếu mần như vậy, điều kiện if trở nên mập mờ: cho trị True ngay cả khi biến blnMot đã được gán trị là 1.
Đoạn mã 1
Dim blnTrue As Boolean = True
Dim blnMot As Boolean = 1
Dim blnTruMot As Boolean = -1
Dim blnFalse As Boolean = False
    ...
If blnMot = -1 Then
 Debug.WriteLine(blnTrue)
 Debug.WriteLine(blnMot.ToString)
 Debug.WriteLine(Convert.ToString(Convert.ToInt32(blnTruMot)))
End If
 Tốt nhất, ta chuyển trị của biến blnTruMot ra trị nguyên rồi mới so sánh. Việc chuyển đổi này luôn trả về một trị dương, bất chấp biến đã được gán trị trước đó là gì (đoạn mã 2).
Đoạn mã 2
If Convert.ToInt16(blnTruMot) = 1 Then
 Debug.WriteLine(blnFalse)
 Debug.WriteLine(Convert.ToString(Convert.ToInt32(blnFalse)))
End If
 Bạn cần biết thêm: hành vi ToInt16ToInt32 của lớp Convert dùng để chuyển đổi một trị Boolean thành một số nguyên, trị trả về là 1 nếu trị BooleanTrue, ngược lại trị trả về là 0. Hình 1 là kết quả khi cho chạy thử đoạn mã 1 cùng đoạn mã 2.
Hình 1: Kết quả minh họa

 Để tạo những đoạn mã có thể dùng lâu dài, bạn nên tránh sự chuyển đổi trị thiếu rõ ràng. Trong trường hợp các trị Boolean, nếu cần kiểm tra đối chiếu với một trị nguyên, ta nên dùng cách ước lượng tường minh (dùng hành vi ToInt16) để tránh những kết quả không mong đợi.
[Đầu trang]
Trang chủ
Nội lực "Peter Pan"
Cầu nối Intel Việt Nam
Chuyện trong tuần
Cõi người ta
Bình luận thị trường
Cõi Mô-bai
Chuyên đề
Bổ ngửa
Túi càn khôn IT
Hồ lô biến
Cảm về Game
Nhật ký e-CHÍP
Bản quyền Công ty Phần mềm & Truyền thông VASC
 99 Triệu Việt Vương HN; Tel: (04) 9782235 • email: echip@vasc.com.vn
Mọi chi tiết về kinh doanh và quảng cáo xin liên hệ Phòng Quảng cáo. Tel: (04) 9782077 kd@vasc.com.vn