Why doesn't this C# code compile?
.net, c#, nullable
Solution
This happens because the compiler tries to evaluate the statement from right to left. This means that it sees `1.0` and it decides it is double (not double?) and then it sees `null`.
So there is clearly no implicit conversion between `double` and `null` (in fact there is no implicit conversion between `Struct` and `null`).
What you can do is explicitly tell the compiler that one of the two expressions that are convertible to each other.
double? test = true ? null : (double?) 1.0; // 1
double? test = true ? (double?)null : 1.0; // 2
double? test = true ? default(double?) : 1.0; // 3
double? test = true ? new double?() : 1.0; // 4
Problem
``` double? test = true ? null : 1.0; ``` In my book, this is the same as ``` if (true) { test = null; } else { test = 1.0; } ``` But the first line gives this compiler error: Type of conditional expression cannot be determined because there is no implicit conversion between '`<null>`' and '`double`'.