2011-06-07 160 views
3

假设我必须调用具有以下签名的函数:(?Int32)已 doStuff如何判断Request.Form中的值是否是一个数字? (C#)

我想传递给doStuff是从Request.Form读取值。但是,如果传入的值为空,缺少或不是数字,我希望doStuff传递一个空参数。这不应该导致错误;这是一个操作。

我有八个这样的值要做到这一点,所以我想知道什么是写在C#

var foo = Request.Form["foo"]; 
if (foo is a number) 
    doStuff(foo); 
else 
    doStuff(null); 
+0

你需要检查INT,小数等?什么算作一个数字? – alexn 2011-06-07 20:41:10

+0

在我引用的例子中,它需要是一个'Int32',但是这个问题适用于不同的数字类型。 – 2011-06-07 20:45:40

回答

8

如果您要检查它是否是一个整数,尝试解析它:

int value; 
if (int.TryParse(Request.Form["foo"], out value)) { 
    // it's a number use the variable 'value' 
} else { 
    // not a number 
} 
5

的高贵方式,你可以这样做

int dummy; 
if (int.TryParse(foo, out dummy)) { 
    //... 
} 
4

使用Int32.TryParse

e.g:

var foo = Request.Form["foo"]; 
int fooInt = 0; 

if (Int32.TryParse(foo, out fooInt))  
    doStuff(fooInt); 
else  
    doStuff(null); 
相关问题