将字符串转换为int64列表

时间:2012-05-19 00:18:59

标签: c#

在客户端上,我有一个int数组,我称之为ToString方法;然后我通过ajax将该字符串发送到服务器。

在服务器上,我写的是:

var TestList = (from string s in TheString.Split(',')
                select Convert.ToInt64(s)).ToList<long>();

如果传入的字符串实际包含意外值,这会崩溃吗?

感谢。

2 个答案:

答案 0 :(得分:2)

如果字符串包含意外值,则可能会抛出Convert.ToInt64(string)文档中提到的FormatExceptionOverflowException

为避免异常,您可以使用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();

但这不是一个好主意,因为查询会产生副作用,如果查询变得更复杂,可能会导致意外行为。