The problem occurs because the conditional operator doesn’t look at how the value is used (assigned in this case) to determine the type of the expression — just the true/false values. In this case, you have a null
and an Int32
, and the type can not be determined (there are real reasons it can’t just assume Nullable<Int32>
).
If you really want to use it in this way, you must cast one of the values to Nullable<Int32>
yourself, so C# can resolve the type:
EmployeeNumber =
string.IsNullOrEmpty(employeeNumberTextBox.Text)
? (int?)null
: Convert.ToInt32(employeeNumberTextBox.Text),
or
EmployeeNumber =
string.IsNullOrEmpty(employeeNumberTextBox.Text)
? null
: (int?)Convert.ToInt32(employeeNumberTextBox.Text),