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 に答える