2012-11-11 2 views
7

:C# 짧은 if 문이 int로 작동하지 않습니까? (INT = null이) 나는 짧은 경우 사용하여 내 코드를 단축하기 위해 노력하고

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); 

그리고 나는 대체하는 경우 ''(예를 들어 정수에 ''4)는 null도 작동합니다

int? myInt=myTextBox.Text == "" ? 4: 
    Convert.ToInt32(myTextBox.Text); 
+1

이 경우 짧은,하지만 삼항 연산자되지 않습니다 : C#을 단어 기본을 포함 이유입니다. – MarioDS

+1

'int'를'int? '로 던지십시오. – CodesInChaos

+0

이것은 중복입니다 : ( – nawfal

답변

7

대신이 시도: 나는 내 다음과 같은 제안

int? myInt=myTextBox.Text == "" ? (int?)null : Convert.ToInt32(myTextBox.Text); 
+3

너희들 모두 int.TryParse 흠 :)에 대해 많이주지 않아? – KroaX

0
int? myInt=myTextBox.Text == "" ? (int?)null : 
    Convert.ToInt32(myTextBox.Text); 
+0

이 질문에 기술적으로 대답 할 수 있지만 _why_라고 쓰면 대답이 크게 향상됩니다. – Ben

+0

@ Ben, 의견을 주셔서 감사합니다. 나는 그것이 명백하다고 생각한다. –

1

?

int value; 
int? myInt = (int.TryParse(myTextBox.Text, out value)) ? value : default(int?); 
2

if 식 (if 및 else)의 두 부분이 모두 동일하다는 것을 컴파일러에 알리는 것이 필요합니다.

int? myInt=myTextBox.Text == "" 
    ? default(int?) 
    : Convert.ToInt32(myTextBox.Text); 
0
int number =!string.IsNullOrEmpty(temp) ? Convert.ToInt32(temp) : (int?) null; 
관련 문제