decimal decimalVal;
Decimal.TryParse("123-", out decimalVal);
Console.WriteLine(decimalVal); // -123
为什么用这种方式解析“123-”字符串?
答案 0 :(得分:11)
Decimal.TryParse Method默认使用NumberStyles.Number解析输入。 NumberStyles.Number包括NumberStyles.AllowTrailingSign。
Decimal.TryParse方法(String,Decimal)
[...]
使用NumberStyles.Number样式解释参数s [...]
<强>数强> 指示使用AllowLeadingWhite,AllowTrailingWhite,AllowLeadingSign,AllowTrailingSign,AllowDecimalPoint和AllowThousands样式。这是一种复合数字样式。
<强> AllowTrailingSign 强> 表示数字字符串可以有尾随符号。有效的尾随符号字符由NumberFormatInfo.PositiveSign和NumberFormatInfo.NegativeSign属性确定。
答案 1 :(得分:1)
默认情况下使用NumberStyles.Number枚举器:
表示使用AllowLeadingWhite,AllowTrailingWhite,AllowLeadingSign,AllowTrailingSign,AllowDecimalPoint和AllowThousands样式。这是一个复合数字样式
http://msdn.microsoft.com/en-us/library/system.globalization.numberstyles.aspx
答案 2 :(得分:1)
NumberNegativePattern仅用于字符串输出,但在解析时将被忽略。
为了进行解析,使用了另一个参数:NumberStyles
。
Convert.ChangeType
路由到decimal.Parse
,因此,如果您直接使用正确的重载,则可以指定不允许尾随符号:
var result = decimal.Parse("123-", NumberStyles.Number & ~NumberStyles.AllowTrailingSign); // will throw an exception
答案 3 :(得分:0)
这是Decimal.Parse
的可接受格式。 style
方法的Parse
选项允许使用前导和尾随符号。