我试图通过使用short-if来缩短我的代码:
int? myInt=myTextBox.Text == "" ? null :
Convert.ToInt32(myTextBox.Text);
但是我收到以下错误: 无法确定条件表达式的类型,因为''和'int'
之间没有隐式转换以下作品:
int? myInt;
if (myTextBox.Text == "") //if no text in the box
myInt=null;
else
myInt=Convert.ToInt32(myTextBox.Text);
如果我用整数替换'null'(比如'4'),它也可以工作:
int? myInt=myTextBox.Text == "" ? 4:
Convert.ToInt32(myTextBox.Text);
答案 0 :(得分:7)
请改为尝试:
int? myInt=myTextBox.Text == "" ? (int?)null : Convert.ToInt32(myTextBox.Text);
答案 1 :(得分:3)
我们需要的是让编译器知道if表达式的两个部分(if和else)是相同的。这就是为什么C#包含单词默认:
int? myInt=myTextBox.Text == ""
? default(int?)
: Convert.ToInt32(myTextBox.Text);
答案 2 :(得分:1)
我的建议如下?
int value;
int? myInt = ( int.TryParse(myTextBox.Text, out value ) ) ? value : default(int?);
答案 3 :(得分:0)
int? myInt=myTextBox.Text == "" ? (int?)null :
Convert.ToInt32(myTextBox.Text);
答案 4 :(得分:0)
int number =!string.IsNullOrEmpty(temp) ? Convert.ToInt32(temp) : (int?) null;