Tiêu đề (và thẻ) của bạn hỏi về "int", nhưng câu hỏi của bạn cho biết bạn đang gặp phải lỗi "thập phân". Dù bằng cách nào, không có điều gì là "trống" khi nói đến một số value type (chẳng hạn như Integer
, Decimal
, v.v.). Chúng không thể được đặt thành Nothing
như bạn có thể với một số reference type (chẳng hạn như String
hoặc lớp học). Thay vào đó, các kiểu giá trị có một hàm tạo ngầm mặc định tự động khởi tạo các biến của loại đó thành giá trị mặc định của nó. Đối với các giá trị số như Integer
và Decimal
, đây là 0. Đối với các loại khác, hãy xem this table.
Vì vậy, bạn có thể kiểm tra để xem nếu một loại giá trị đã được khởi tạo với đoạn mã sau:
Dim myFavoriteNumber as Integer = 24
If myFavoriteNumber = 0 Then
''#This code will obviously never run, because the value was set to 24
End If
Dim mySecondFavoriteNumber as Integer
If mySecondFavoriteNumber = 0 Then
MessageBox.Show("You haven't specified a second favorite number!")
End If
Lưu ý rằng mySecondFavoriteNumber
được tự động khởi tạo 0 (giá trị mặc định cho một Integer
) đằng sau hậu trường của các trình biên dịch, do đó, tuyên bố If
là True
. Trong thực tế, việc kê khai của mySecondFavoriteNumber
trên là tương đương với các tuyên bố sau:
Dim mySecondFavoriteNumber as Integer = 0
Tất nhiên, như bạn đã có thể nhận thấy, không có cách nào để biết liệu số yêu thích của một người là thực 0, hoặc nếu họ chưa chỉ định số yêu thích. Nếu bạn thực sự cần một loại giá trị có thể được thiết lập để Nothing
, bạn có thể sử dụng Nullable(Of T)
, khai báo biến thay vào đó là:
Dim mySecondFavoriteNumber as Nullable(Of Integer)
Và kiểm tra xem nó đã được phân công như sau:
If mySecondFavoriteNumber.HasValue Then
''#A value has been specified, so display it in a message box
MessageBox.Show("Your favorite number is: " & mySecondFavoriteNumber.Value)
Else
''#No value has been specified, so the Value property is empty
MessageBox.Show("You haven't specified a second favorite number!")
End If
Chỉ cần một mặt lưu ý: trên thực tế bạn * * có thể gán Không có gì để một kiểu giá trị trong VB.Net. Nhưng trong trường hợp đó, Không có gì không có nghĩa là 'null' nhưng 'mặc định (T)', vì vậy cho các số nguyên nó giống như 0. – jeroenh
@jeroenh: Đúng vậy. Lưu ý rằng tôi đã nói rằng chúng không thể được đặt thành 'Nothing' * như bạn có thể với một kiểu tham chiếu *. Đặt giá trị kiểu thành 'Nothing' sẽ khiến nó được khởi tạo trở lại kiểu mặc định của nó. Vấn đề là không có trạng thái rỗng "null' hoặc" rỗng "nào cho các kiểu giá trị; chúng luôn chứa một giá trị. –
Lưu ý gần đây hơn, 'Dim mySecondFavoriteNumber as Integer?' Giống với 'Dim mySecondFavoriteNumber as Nullable (Of Integer)' –