Is there any difference using default(int?)
or (int?)null
to assign a variable?
Is the same thing?
Or exists some pros and cons to use each way?
No difference. int? is just shorthand for Nullable<int> , which itself is shorthand for Nullable<Int32> . Compiled code will be exactly the same whichever one you choose to use.
The default value of a nullable value type represents null , that is, it's an instance whose Nullable<T>. HasValue property returns false .
The default value of a nullable or other reference type is null while the default value for a long or other value type is 0 (and any other members set to their defaults).
They're exactly the same thing, as is new int?()
.
If you're just assigning a variable, you normally wouldn't need it at all though. I'd just use:
int? x = null;
for example.
The time I most often need one of these expressions is the conditional operator, e.g.
int y = ...;
int? z = condition ? default(int?) : y;
You can't use null
in that scenario as the compiler can't infer the type of the expression. (Arguably that would be a useful addition to the language, mind you...)
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