7

我正在尝试通过使用 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);
4

5 回答 5

7

试试这个:

int? myInt=myTextBox.Text == "" ? (int?)null : Convert.ToInt32(myTextBox.Text);
于 2012-11-11T10:27:26.837 回答
4

我们需要让编译器知道,if 表达式的两个部分(if 和 else)是相同的。这就是 C# 包含单词default的原因:

int? myInt=myTextBox.Text == "" 
   ? default(int?)
   : Convert.ToInt32(myTextBox.Text);
于 2012-11-11T10:34:52.453 回答
1

我的建议如下?

int value;
int? myInt = ( int.TryParse(myTextBox.Text, out value ) ) ? value : default(int?);
于 2012-11-11T10:33:27.793 回答
0
int? myInt=myTextBox.Text == "" ? (int?)null : 
    Convert.ToInt32(myTextBox.Text);
于 2012-11-11T10:30:20.423 回答
0
int number =!string.IsNullOrEmpty(temp) ? Convert.ToInt32(temp) : (int?) null;
于 2016-12-27T10:15:39.873 回答