3

假设我必须调用具有以下签名的函数:doStuff(Int32?)

我想传递doStuff一个从Request.Form. 但是,如果传入的值是空白、缺失或不是数字,我想doStuff传递一个空参数。这不应导致错误;这是一个操作。

我必须用八个这样的值来做到这一点,所以我想知道用 C# 编写的优雅方式是什么

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

3 回答 3

8

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

int value;
if (int.TryParse(Request.Form["foo"], out value)) {
    // it's a number use the variable 'value'
} else {
    // not a number
}
于 2011-06-07T20:41:59.937 回答
5

你可以做类似的事情

int dummy;
if (int.TryParse(foo, out dummy)) {
   //...
}
于 2011-06-07T20:41:32.920 回答
4

使用Int32.TryParse

例如:

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

if (Int32.TryParse(foo, out fooInt ))     
    doStuff(fooInt); 
else     
    doStuff(null); 
于 2011-06-07T20:42:01.267 回答