0

これが私のコードです:

receipt.AmountCharged = String.Format("{0:C}", recordPaymentRequest.Payment);

「0:C」に次のようなメッセージが表示されます。

フォーマットが指定されていますが、引数がIFormatableではありません

私が試してみると、次の.tostring("C")lようになります。

エラーCS1502:「string.ToString(System.IFormatProvider)」に最も一致するオーバーロードされたメソッドにいくつかの無効な引数がありますエラーCS1503:引数1:「string」から「System.IFormatProvider」に変換できません

これを通貨または小数点以下2桁に変換するにはどうすればよいですか?

そして、そのiformatproviderはどういう意味ですか?

明確にするために:

[DataContract]
public class RecordPaymentRequest : TokenRequest {

    [DataMember]
    public string Payment {
        get { return payment; }
        set { payment = value; }
    }

それは役に立ちますか?

4

1 に答える 1

5

プロパティは、インターフェイスPaymentを実装するタイプである必要がありIFormatableます。この場合、おそらくDecimal支払いは金銭的価値のように思われるためです。
それが不可能な場合は、最初に文字列値を解析する必要があります。次に例を示します。

receipt.AmountCharged = 
         String.Format("{0:C}", Decimal.Parse(recordPaymentRequest.Payment));
于 2012-08-16T18:00:42.753 に答える