Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Assigning result of If operator to System.Nullable type

When using the If operator (http://msdn.microsoft.com/en-us/library/bb513985(v=VS.100).aspx) to assign a value to a System.Nullable object, if the result is Nothing (null), then 0 is assigned to the object.

Example:

'Expected value is null (Nothing). Actual value assigned is 0.
Dim x As System.Nullable(Of Integer) = If(1 = 0, 1, Nothing) 

If x is a nullable type, why is it being assigned the default integer type of 0. Shouldn't it receive a value of null?

like image 292
DCNYAM Avatar asked Dec 13 '25 05:12

DCNYAM


1 Answers

Nothing in the context of a value type resolves to the default value for that type. For an integer, this is just 0.

The If operator does not do any conversions between its argument types, they are all treated equally – as Integer in your case. Hence your code is the same as

Dim x As Integer? = If(1 = 0, 1, 0)

To make the result nullable, you need to make the types explicit.

Dim x As Integer? = If(1 = 0, 1, CType(Nothing, Integer?))
like image 130
Konrad Rudolph Avatar answered Dec 15 '25 11:12

Konrad Rudolph



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!