EmployeeNumber =
string.IsNullOrEmpty(employeeNumberTextBox.Text)
? null
: Convert.ToInt32(employeeNumberTextBox.Text),
我经常发现自己想做这样的事情(EmployeeNumber
是一个Nullable<int>
,因为它是一个LINQ-to-SQL dbml对象上的属性,其中列允许NULL值)。不幸的是,编译器认为
在 'null' 和 'int' 之间没有隐式转换
即使这两种类型单独赋值给可空int都是有效的。
使用空合并运算符似乎不是一个选项,因为如果.Text
字符串不为空,则需要进行内联转换。
据我所知,唯一的方法是使用if语句和/或分两步赋值。在这种特定情况下,我觉得这非常令人沮丧,因为我想使用对象初始化器语法,并且此赋值将在初始化块中...
有人知道更优雅的解决方案吗?
EmployeeNumber
属性的类型为int?
,编译器将从中推断出类型,但如果分配给更一般化的类型(如object
)或新声明的var
变量,则仍会出现错误。 - binki