selectedItem
has two fields:
int? _cost
string _serialNumber
In this example, _cost
and _serialNumber
of selectedItem
are BOTH null. I am reading through the fields of selectedItem
via their properties, and filling in textboxes with their values, when...
TextBox1.Text = selectedItem.Cost.ToString(); //no error TextBox2.Text = selectedItem.SerialNumber.ToString(); //error
I understand that SerialNumber.ToString()
is redundant (because it is already a string), but I don't understand why this causes this exception:
Nullable object must have a value.
int? _cost
is nullable, and does not have a value, yet it does not give me the exception.string _serialNumber
is nullable, and does not have a value, yet it does give me the exception.This question touches on it, the guy is essentially asking the same thing, but there is no designated answer, and it also doesn't explain why a nullable int
? For example, can I use .ToString()
on a nullable int but not on a null string?
.ToString() It will not handle NULL values; it will throw a NULL reference exception error.
"Returns the result of calling toString for a non- null argument and 'null' for a null argument." "if the argument is null , then a string equal to "null"; otherwise, the value of obj. toString() is returned."
toString() returning null would be very bad API design. Clearly, if you are able to call toString() on it, the object is clearly not null. Otherwise, there would be a NullPointerException .
Null and toString()toString() is only called implicitly if the object passed isn't null. If it is, the literal "null" is printed instead.
Because string
type's null
really points to nothing, there isn't any object in memory.
But int?
type(nullable) even with value set to null
still points to some object.
If you read Jeffrey Richter's "CLR via C#" you'll find out that nullable type are just facade classes for common types with some incapsulated logics in order to make work with DB null more convenient.
Check msdn to learn about nullable types.
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