13
decimal decimalVal;
Decimal.TryParse("123-", out decimalVal);
Console.WriteLine(decimalVal); // -123

「123-」文字列がこのように解析されるのはなぜですか?

4

4 に答える 4

12

Decimal.TryParseメソッドは、デフォルトでNumberStyles.Numberを使用して入力を解析します。NumberStyles.NumberにはNumberStyles.AllowTrailingSignが含まれます。

Decimal.TryParse メソッド (文字列、10 進数)

[...]
パラメータ s は NumberStyles.Number スタイルを使用して解釈されます。
[...]

Number   AllowLeadingWhite、AllowTrailingWhite、AllowLeadingSign、AllowTrailingSign、AllowDecimalPoint、および AllowThousands スタイルが使用されることを示します。これは合成数スタイルです。

AllowTrailingSign   数値文字列の末尾に符号を付けることができることを示します。有効な末尾符号文字は、NumberFormatInfo.PositiveSign および NumberFormatInfo.NegativeSign プロパティによって決定されます。

于 2013-06-17T12:57:07.330 に答える
1

NumberStyles.Number 列挙子がデフォルトで使用されます。

AllowLeadingWhite、AllowTrailingWhite、AllowLeadingSign、AllowTrailingSign、AllowDecimalPoint、および AllowThousands スタイルが使用されることを示します。これは合成数スタイルです

http://msdn.microsoft.com/en-us/library/system.globalization.numberstyles.aspx

于 2013-06-17T13:01:50.410 に答える
0

これは、 で受け入れられる形式ですDecimal.Parse。メソッドのstyleオプションParseにより、先頭および末尾の符号を使用できます。

詳細: http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx

于 2013-06-17T12:56:38.660 に答える