0

不変の Money タイプ (金額と通貨) があり、ここで見た例をコピーしています。

次のようにディープ コピーを実装します。

public object DeepCopy(object value)
{
    return new Money(((Money) value).Amount, ((Money) value).Currency);
}

これは、イミュータブルにとっては無意味で非効率的です。しかし、私はNHibernateのライブラリを裏返しに知らないので、それが必要なものであるかどうか、そしてこれを行うのが安全かどうかを知りたいです:

public object DeepCopy(object value)
{
    return value;
}

object私が予測できる唯一の違いは、NHibernateのどこかで、!=オペレーターが返すことに依存している場合trueです。でもそれはまずいので、そんなことはないと思いますが、確認をお願いします。

classまた、私のお金はではなく であることに注意してくださいstruct

4

1 に答える 1

1

DeepCopy は変更追跡用のコピーを持つためにありますが、これは不変型には無意味であるため、実装はすべての不変型で一般的です

public bool IsMutable
{
    get { return false; }
}

public object DeepCopy(object value)
{
    return value;
}
于 2013-06-06T08:16:34.467 に答える