C# 将字符串转换为int64的列表
在客户机上,我有一个int数组,在该数组上调用ToString方法;然后我通过ajax将该字符串发送到服务器 在服务器上,我写了以下内容:C# 将字符串转换为int64的列表,c#,C#,在客户机上,我有一个int数组,在该数组上调用ToString方法;然后我通过ajax将该字符串发送到服务器 在服务器上,我写了以下内容: var TestList = (from string s in TheString.Split(',') select Convert.ToInt64(s)).ToList<long>(); var TestList=(来自string.Split(',')中的字符串s) 选择Convert.ToInt64(s
var TestList = (from string s in TheString.Split(',')
select Convert.ToInt64(s)).ToList<long>();
var TestList=(来自string.Split(',')中的字符串s)
选择Convert.ToInt64(s)).ToList();
如果传入的字符串实际包含意外值,这会崩溃吗
谢谢。如果字符串包含意外值,它可能会引发
格式异常
或溢出异常
,如的文档中所述
为了避免异常,可以使用bool long.TryParse(string,out long)
List testList=newlist();
foreach(string.Split(',')中的字符串s)
{
长数;
if(长锥虫(s,超出编号))
{
testList.Add(编号);
}
其他的
{
//做点什么?
}
}
如果字符串包含意外值,则可能引发格式异常
或溢出异常
,如的文档中所述
为了避免异常,可以使用bool long.TryParse(string,out long)
List testList=newlist();
foreach(string.Split(',')中的字符串s)
{
长数;
if(长锥虫(s,超出编号))
{
testList.Add(编号);
}
其他的
{
//做点什么?
}
}
您可以在一条语句中完成,但需要助手方法的帮助
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;
}
注意:实际上,您可以不使用helper方法:
long value;
var TestList =
(from string s in TheString.Split(',')
where long.TryParse(s, out value)
select value).ToList();
但这不是一个好主意,因为查询会产生副作用,如果查询变得更复杂,可能会导致意外行为。您可以在一条语句中完成,但需要助手方法的帮助
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;
}
注意:实际上,您可以不使用helper方法:
long value;
var TestList =
(from string s in TheString.Split(',')
where long.TryParse(s, out value)
select value).ToList();
但这不是一个好主意,因为查询会产生副作用,如果查询变得更复杂,可能会导致意外行为。好的,谢谢您的建议。无论如何,要使它适合linq语法的单行程序?我只是觉得它读起来更好,但结果当然更重要。@frenchie你可以删除所有的换行符。顺便说一句,把“long number;”行放在循环内部或外部有什么区别吗?@frenchie:是的,它改变了变量的范围。在我看来,你应该尽量使用最小的范围。好的,谢谢你的建议。无论如何,要使它适合linq语法的单行程序?我只是觉得它读起来更好,但结果当然更重要。@frenchie你可以删除所有的换行符。顺便说一句,把“long number;”行放在循环内部或外部有什么区别吗?@frenchie:是的,它改变了变量的范围。在我看来,您应该始终尽可能使用最小的作用域。如果有一个数字无法成功解析为long,您希望发生什么?我想了解它并将布尔值设置为false;我正在清理来自客户端的数据。如果有一个数字无法成功解析为long,您希望如何处理?我想了解它并将布尔值设置为false;我正在清理来自客户端的数据。+1我喜欢这种方法,但它不能完全解决OP的问题(如果你看到关于将布尔值设置为false的评论)@ReedCopsey:是的,我非常喜欢一行简单的解决方案,但我刚刚意识到,对于这种方法,foreach效果更好。+1我喜欢这种方法,但这并不能完全解决OP的问题(如果你看到关于将布尔值设置为false的评论)@ReedCopsey:是的,我非常喜欢一行简单的解决方案,但我只是意识到,对于这一个,foreach工作得更好。