4 votes

Existe-t-il une classe en .Net pour stocker une valeur et une valeur précédente ?

J'ai besoin de stocker la valeur actuelle d'un objet et sa valeur précédente. J'ai trouvé quelque chose comme ceci :

struct TwoStepHistory<T>
{
    private T _v0;

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

    public T OldValue { get; private set; }
}

Mais cela semble tellement évident et simple que j'ai pensé qu'il devait y avoir quelque chose dans BCL ou ailleurs dans dotnet qui faisait la même chose. Je ne veux pas réinventer une bicyclette, vous savez. Quelqu'un connaît-il une structure similaire ?

Il y a eu des commentaires sur la question de savoir si c'est utilisable pour le type de référence, et voici un exemple, tout fonctionne, je ne sais pas pourquoi les gens sont confus. https://dotnetfiddle.net/BSm1Pz v2 avec mutation de l'objet cible : https://dotnetfiddle.net/DGkAgv

2voto

Jamiec Points 35773

Non, il n'y a rien dans la BCL qui le permette. Il s'agit d'un détail d'implémentation qu'il vaut mieux laisser aux développeurs d'applications plutôt qu'à la bibliothèque de base.

Quelques remarques :

  1. Les structures doivent être immuables
  2. Vous pouvez envisager de stocker un copie de l'ancien article, plutôt qu'un référence à celle-ci - qui peut être modifié à partir d'un autre endroit (voir : https://dotnetfiddle.net/HOqLuq )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X