假设我必须使用以下签名调用函数: doStuff(的Int32?)
我想向doStuff
传递一个从Request.Form
读取的值。但是,如果传入的值为空,缺少或不是数字,我希望doStuff
传递一个空参数。这不应该导致错误;这是一项行动。
我必须用八个这样的值来做这个,所以我想知道用C#写一个优雅的方法是什么
var foo = Request.Form["foo"];
if (foo is a number)
doStuff(foo);
else
doStuff(null);
答案 0 :(得分:8)
如果要检查它是否为整数,请尝试解析它:
int value;
if (int.TryParse(Request.Form["foo"], out value)) {
// it's a number use the variable 'value'
} else {
// not a number
}
答案 1 :(得分:5)
您可以执行类似
的操作int dummy;
if (int.TryParse(foo, out dummy)) {
//...
}
答案 2 :(得分:4)
e.g:
var foo = Request.Form["foo"];
int fooInt = 0;
if (Int32.TryParse(foo, out fooInt ))
doStuff(fooInt);
else
doStuff(null);