我有一个看起来像这样(简化)的 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>
为什么?这是怎么回事?