If have this in the setter of a property:
decimal? temp = value as decimal?;
value = "90"
But after the cast, temp is null...
What is the proper way to do this cast?
Nullable Types have the properties Value and HasValue . HasValue - Gets a value indicating whether the current Nullable object has a value. Value - If HasValue is true, this contains the value if not its null. decimal v2; if (v1.HasValue) // check for null { v2 = v1.Value; }
Step 1 − Divide the decimal number to be converted by the value of the new base. Step 2 − Get the remainder from Step 1 as the rightmost digit (least significant digit) of new base number. Step 3 − Divide the quotient of the previous divide by the new base.
Unboxing only works if the type is identical! You can't unbox an object
that does not contain the target value. What you need is something along the lines of
decimal tmpvalue; decimal? result = decimal.TryParse((string)value, out tmpvalue) ? tmpvalue : (decimal?)null;
This looks whether the value is parsable as a decimal
. If yes, then assign it to result
; else assign null
. The following code does approximately the same and might be easier to understand for people not familiar with the conditional operator ?:
:
decimal tmpvalue; decimal? result = null; if (decimal.TryParse((string)value, out tmpvalue)) result = tmpvalue;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With