long.Parse()C#

ViV*_*ViV 10 c# .net-3.5

如何在C#中将字符串(例如"-100,100")转换为long.

我目前有一行代码

long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands);
Run Code Online (Sandbox Code Playgroud)

但是当x是"负数"时,这会中断.

我的方法:

long xi = long.Parse("-100,253,1", 
System.Globalization.NumberStyles.AllowLeadingSign & System.Globalization.NumberStyles.AllowThousands);
Run Code Online (Sandbox Code Playgroud)

错了,因为它破了.

Ski*_*gle 9

放手一搏:

long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign);
Run Code Online (Sandbox Code Playgroud)

这可能是因为您正在声明标志,您可能需要声明所有可能会被击中的标志.我刚刚在问题中使用您给定的字符串值确认此代码是在测试项目中工作的.如果它符合您的要求,请告诉我.在单个参数中声明多个标志时使用| 代替 &

编辑:http: //msdn.microsoft.com/en-us/library/cc138362.aspx 在"枚举类型为位标志"标题下查找不同位运算符的探索(这比我想象的更难找到.)


Fra*_*lli 6

我会使用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
    }
Run Code Online (Sandbox Code Playgroud)