2013-02-19 78 views
0

是否可以使用Int32.TryParse檢查負數?用TryParse檢查負數

int defaultTop; 
displayTop = (Int32.TryParse(DisplayTop, out defaultTop) ? Convert.ToInt32(DisplayTop) : 1000); 
+0

你想完成什麼?如果它是一個有效的整數,那麼它將被轉換,而不管它是否爲正數。如果它不是一個有效的Int,那麼它將會失敗... – Josh 2013-02-19 22:15:49

+2

不能直接使用TryParse。但是爲什麼不在分析之後檢查defaultTop本身呢? – 2013-02-19 22:16:35

+0

我將DisplayTop傳遞給Storedproc以獲取頂部的DisplayTop行數。 – BumbleBee 2013-02-19 22:17:17

回答

7

爲什麼不使用UInt32.TryParse(DisplayTop, out defaultTop)

如果數字爲0或正值,則返回true;否則返回false。

+0

+ 1000000000000! – 2013-02-19 22:28:35

2

試試這個

int defaultTop; 
var isValidInt = Int32.TryParse(DisplayTop, out defaultTop); 
displayTop = isValidInt && defaultTop >= 0 ? defaultTop : 1000; 
1

使用Math.Max:

displayTop = Math.Max(1,(Int32.TryParse(DisplayTop, out defaultTop) ? Convert.ToInt32(DisplayTop) : 1000)); 

當然,這麼長的表情有點難看,但它工作。

2

你不能單獨使用TryParse,你必須獨立檢查defaultTop的值。如果你想把它全部放在一條線上,你可以嘗試:

displayTop = ((Int32.TryParse(DisplayTop, out defaultTop) && defaultTop >= 0) ? defaultTop : 1000); 
+1

爲什麼你第二次轉換它?你可以直接使用'defaultTop'。 – 2013-02-19 22:22:37

+0

@TimSchmelter - 你是對的!禍害或盲目複製/粘貼。 – 2013-02-19 22:25:08