long.Parse()C#
如何将字符串(比如“-100100”)转换为C#中的长字符串 我现在有一行代码是long.Parse()C#,c#,.net-3.5,C#,.net 3.5,如何将字符串(比如“-100100”)转换为C#中的长字符串 我现在有一行代码是 long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands); 但当x是一个“负数”时,这就中断了 我的方法: long xi = long.Parse("-100,253,1", System.Globalization.NumberStyles.AllowLeadingSign & System.Globaliza
long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands);
但当x是一个“负数”时,这就中断了
我的方法:
long xi = long.Parse("-100,253,1",
System.Globalization.NumberStyles.AllowLeadingSign & System.Globalization.NumberStyles.AllowThousands);
是错的,因为它坏了。试试看:
long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign);
这很可能是因为您正在声明标志,您可能需要声明所有可能被击中的标志。
我刚刚用问题中给定的字符串值确认了这段代码在测试项目中工作。让我知道它是否符合您的要求。在单个参数中声明多个标志时,使用|而不是&
编辑:
在“枚举类型作为位标志”标题下找到不同位运算符的解释(这比我想象的更难找到)。我将使用TryParse而不是Parse,以避免异常,即:
long xi;
if (long.TryParse(numberString, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign, null, out xi))
{
// OK, use xi
}
else
{
// not valid string, xi is 0
}
在你的“解析”中稍有输入错误的应该是“TryParse”,否则答案会更好。真遗憾,我觉得没有必要向他指出特里帕斯。