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 に答える