处理当前/先前值的最佳方法

我在业余时间正在做一个小项目,但对处理当前/以前的“值”的方式不满意(在我的情况下,值是一个类)

简短地描述我的主题是关于一个网格,其中包含一个单元格列表。当我悬停或单击一个单元格时,会相应地绘制该单元格。但是,当然,当我不再需要悬停一个单元格或选择另一个单元格时,我需要绘制新的单元格并绘制原来的单元格。

到目前为止,我来到这里:

public class PreviousCurrent<T> where T : class
{
   T current;

   public T Previous { get; set; }

   public T Current
   {
        get => current;
        set
        {
            if(value == current)
                return;

            if (Previous != null)
            {
                Previous = current;
                current = value;
            }
            else
                current = value;
        }
    }

    internal PreviousCurrent(T previous, T current)
    {
        Previous = previous;
        Current = current;
    }

    public static PreviousCurrent<T> Empty => new PreviousCurrent<T>(null, null); 
}

它可行,但是我想知道是否有更简单/更优雅的方式来处理这种情况?

任何建设性的帮助/批评都欢迎!

感谢您的建议!