2012-11-11 11 views
7

:C# kısa if ifadesi int ile çalışmıyor? (Int = null) Ben kısa olursa kullanarak kodumu kısaltmak için çalışıyorum

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

Ama şu hatayı alıyorum: örtülü hiçbir dönüşüm olmadığından koşullu ifadenin Tipi tespit edilemeyen 'arasındaki' ve 'int'

aşağıdaki çalışır:

int? myInt; 
if (myTextBox.Text == "") //if no text in the box 
    myInt=null; 
else 
    myInt=Convert.ToInt32(myTextBox.Text); 

ve değiştirirseniz '' (diyelim tamsayı içinde '' 4) boş o da çalışır:

+1

Bu eğer kısa ama bir üçlü operatördür değildir: C# kelimesini varsayılan içeren nedeni de budur. – MarioDS

+1

"int" ifadesini int. – CodesInChaos

+0

Bu yinelenen bir :( – nawfal

cevap

7

yerine bu deneyin: Ben My uygulamanızı öneririz

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

Siz iyi int.TryParse hm :) hakkında çok vermiyorsun? Bu _may_ teknik soruya cevap olsa da öyle _why_ bildiririseniz – KroaX

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

Cevabınız önemli ölçüde artar. – Ben

+0

@ Ben, yorum için teşekkürler. Bence açık. –

1

? İhtiyacımız

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

eğer ifadesinin her iki parçaları (if ve else) aynı olduğunu, derleyici bildirmek etmektir.

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