Bij*_*dav 21 c# type-conversion
下面的代码应返回-1十进制值,但返回0。我在做错什么吗?
decimal validity = -1;
validityStr = "-1";
decimal.TryParse(validityStr, NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture, out validity);
Run Code Online (Sandbox Code Playgroud)
预期产量:
-1
实际输出:
0
Ste*_*odd 30
您忘了告诉TryParse前导符号可以
decimal validity = -1;
var validityStr = "-1";
decimal.TryParse(validityStr,
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign,
CultureInfo.InvariantCulture,
out validity);
Run Code Online (Sandbox Code Playgroud)
小智 6
根据文档:
返回此方法时,如果转换成功,则包含与s中包含的数值等效的Decimal数;如果转换失败,则包含零。如果s参数为null或Empty,不是有效格式的数字,或者表示小于MinValue或大于MaxValue的数字,则转换失败。此参数通过uininitialized传递;结果中最初提供的任何值都将被覆盖。
由于转换失败,有效性变为0。为确保转换有效,您应该添加NumberStyles .AllowLeadingSign