我需要存储对象的当前值及其先前的值。我想到了这样的东西:

struct TwoStepHistory<T>
{
    private T _v0;

    public T Value
    {
        get
        {
            return _v0;
        }
        set
        {
            OldValue = _v0;
            _v0 = value;
        }
    }

    public T OldValue { get; private set; }
}


但是它看起来如此明显和简单,以至于我认为BCL或dotnet中的其他地方必须有相同的功能。您知道,不想重造自行车。有人知道类似的结构吗?

有一些评论说这是否可以用于引用类型,这是一个示例,一切正常,不确定为什么人们会感到困惑。 https://dotnetfiddle.net/BSm1Pz,具有目标对象突变的v2:https://dotnetfiddle.net/DGkAgv

最佳答案

不,BCL中没有任何东西可以支持这一点。与基础库相比,它是应用程序开发人员更好的实现细节。

一些注意事项:


Structs should be immutable
您可能要考虑存储旧项目的副本,而不是对其的引用-可以从其他位置进行更改(请参阅:https://dotnetfiddle.net/HOqLuq

09-28 06:22