在客户端,我有一个整数数组,我在其上调用 ToString 方法;然后我通过 ajax 将该字符串发送到服务器。
在服务器上,我正在写这个:
var TestList = (from string s in TheString.Split(',')
select Convert.ToInt64(s)).ToList<long>();
如果传入的字符串实际上包含意外的值,这会崩溃吗?
谢谢。
在客户端,我有一个整数数组,我在其上调用 ToString 方法;然后我通过 ajax 将该字符串发送到服务器。
在服务器上,我正在写这个:
var TestList = (from string s in TheString.Split(',')
select Convert.ToInt64(s)).ToList<long>();
如果传入的字符串实际上包含意外的值,这会崩溃吗?
谢谢。
如果字符串包含意外值,它可能会抛出 aFormatException
或 an OverflowException
,如Convert.ToInt64(string)
.
为避免出现异常,您可以使用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?
}
}
你可以在一个语句中完成它,但你需要一个辅助方法的帮助......
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();
但这不是一个好主意,因为查询会产生副作用,如果查询变得更复杂,可能会导致意外行为。