2013-02-19 79 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