在客户端上,我有一个int数组,我称之为ToString方法;然后我通过ajax将该字符串发送到服务器。
在服务器上,我写的是:
var TestList = (from string s in TheString.Split(',')
select Convert.ToInt64(s)).ToList<long>();
如果传入的字符串实际包含意外值,这会崩溃吗?
感谢。
答案 0 :(得分:2)
如果字符串包含意外值,则可能会抛出Convert.ToInt64(string)
文档中提到的FormatException
或OverflowException
。
为避免异常,您可以使用bool long.TryParse(string, out long)
。
List<long> testList = new List<long>();
foreach (string s in theString.Split(','))
{
long number;
if (long.TryParse(s, out number))
{
testList.Add(number);
}
else
{
// Do something?
}
}
答案 1 :(得分:2)
你可以在一个声明中完成它,但你需要帮助方法的帮助......
var TestList =
(from string s in TheString.Split(',')
let value = TryParseLong(s)
where value != null
select value.Value).ToList();
...
static long? TryParseLong(string s)
{
long result;
if (long.TryParse(s, out result))
return result;
return null;
}
注意:实际上,可以在没有辅助方法的情况下执行此操作:
long value;
var TestList =
(from string s in TheString.Split(',')
where long.TryParse(s, out value)
select value).ToList();
但这不是一个好主意,因为查询会产生副作用,如果查询变得更复杂,可能会导致意外行为。