6

检查下面的代码:

class Money
{
    public Money(decimal amount)
    {
        Amount = amount;
    }

    public decimal Amount { get; set; }

    public static implicit operator decimal(Money money)
    {
        return money.Amount;
    }

    public static explicit operator int(Money money)
    {
        return (int)money.Amount;
    }
}

我不明白它在我的代码中会有什么用,我不能做一个像这样的方法:

public static int returnIntValueFrom(Money money)
{
    return (int)money.Amount;
}

实施起来不是更容易更清晰吗?

4

1 回答 1

5

这样做是为了允许将钱添加到其他钱中。如果没有那段代码,这将导致编译器错误,“运算符'+'不能应用于'Money'和'int'类型的操作数”

Money money = new Money(5.35m);
decimal net = money + 6;

使用强制转换运算符,它允许在不引发异常的情况下进行这些类型的转换。它可以帮助提高可读性并允许多态性,例如,不同的货币可以实现自己的类型转换。

于 2013-08-12T23:40:54.297 回答