EmployeeNumber =
string.IsNullOrEmpty(employeeNumberTextBox.Text)
? null
: Convert.ToInt32(employeeNumberTextBox.Text),
Я часто обнаруживаю, что хочу делать такие вещи (EmployeeNumber
- это Nullable<int>
, поскольку это свойство объекта dbml LINQ-to-SQL, в котором столбец допускает значения NULL). К сожалению, компилятор считает, что
Нет неявного преобразования между 'null' и 'int'
даже если оба типа будут действительны в операции присваивания обнуляемому int сами по себе.
Насколько я понимаю, использование оператора объединения с нулевым значением не вариант из-за встроенного преобразования, которое должно произойти в строке .Text
, если она не равна нулю.
Насколько мне известно, единственный способ сделать это - использовать оператор if и / или назначить его в два этапа. В данном конкретном случае меня это очень расстраивает, потому что я хотел использовать синтаксис инициализатора объекта, и это назначение было бы в блоке инициализации ...
Кто-нибудь знает более изящное решение?
EmployeeNumber
, если его тип -int?
, но вы все равно получите ошибку при назначении более обобщенному типу, напримерobject
, или недавно объявленной переменнойvar
. - person binki   schedule 02.12.2020