1

我有一个看起来像这样(简化)的 Money 类:

public class Money
{
    private readonly decimal _amount;

    public decimal Amount
    {
        get { return _amount; }
    }

    public Money(decimal amount)
    {
        _amount = amount;
    }

    public override string ToString()
    {
        return _amount.ToString("c2");
    }

    public static implicit operator Money(decimal value)
    {
        return new Money(value);
    }
}

在我的 Razor 视图中,我想呈现这样的货币价值:

<p>This is my money value:
    @Model.MyNullableMoneyValue
</p>

当我运行视图时,而不是使用 Money 结构的 ToString() 方法,它应该会产生类似“$10.00”的结果,它呈现为好像它正在调用十进制金额的 ToString(),即像“10.0000”。

添加 ToString() 自己解决了这个问题:

<p>This is my money value:
    @Model.MyNullableMoneyValue.ToString()
</p>

为什么?这是怎么回事?

4

0 回答 0