How would I make a variable equal a variable but only its past value?

Hey all, I’m currently trying to implement a basic inventory into my game though there is one problem I can’t get past.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Slot : MonoBehaviour {

    public GameObject invObj;

    public string contains = "Nothing";
    public Sprite thisSprite;

    public Sprite NothingSprite;
    public Sprite SwordSprite;

    // Use this for initialization
    void Start ()
    {
        invObj = GameObject.Find("InvObj");
        GetComponent<Image>().sprite = thisSprite;
	}
	
	// Update is called once per frame
	void Update ()
    {
        GetComponent<Image>().sprite = GetType().GetField(contains + "Sprite").GetValue(this) as Sprite;

        if(invObj.GetComponent<Inventory>().transferring != "Nothing")
        {
            GetComponent<Button>().onClick.AddListener(() => PlacingOntoSlot());
        }
        else
        {
            GetComponent<Button>().onClick.AddListener(() => PickingFromSlot());
        }
	}

    void PlacingOntoSlot()
    {
        contains = invObj.GetComponent<Inventory>().transferring;
        invObj.GetComponent<Inventory>().transferring = "Nothing";
    }

    void PickingFromSlot()
    {
        invObj.GetComponent<Inventory>().transferring = contains;
        contains = "Nothing";
    }
}

This script goes onto each individual UI Button and then there is a inventory script that only contains the transferring string.

What should be happening is that when you press on a button that contains an item the transferring variable should equal the contains variable and then when you click onto another slot the transferring variable should equal Nothing and the contains should equal what transferring was originally. Though what appears to be happening is that for example in the PickingFromSlot() void transferring equals contains but then straight after contains equals Nothing so unity thinks that transferring should equal Nothing

Any ideas on how to fix this? Thanks.

If anyone wishes for a solution to this here is the code that I wrote that fixes the problem, not sure if there is a more practical way around this problem but this works for me

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Slot : MonoBehaviour {

    public GameObject invObj;

    public string contains = "Nothing";
    public Sprite thisSprite;

    public Sprite NothingSprite;
    public Sprite SwordSprite;

    // Use this for initialization
    void Start ()
    {
        invObj = GameObject.Find("InvObj");
        GetComponent<Image>().sprite = thisSprite;
	}
	
	// Update is called once per frame
	void Update ()
    {
        GetComponent<Image>().sprite = GetType().GetField(contains + "Sprite").GetValue(this) as Sprite;

        if(invObj.GetComponent<Inventory>().transferring != "Nothing")
        {
            GetComponent<Button>().onClick.AddListener(() => PlacingOntoSlot());
        }
        else
        {
            GetComponent<Button>().onClick.AddListener(() => PickingFromSlot());
        }
	}

    void PlacingOntoSlot()
    {
        if (invObj.GetComponent<Inventory>().transferring != "Nothing")
        {
            contains = invObj.GetComponent<Inventory>().transferring;
        }

        if (contains == invObj.GetComponent<Inventory>().transferring)
        {
            contains = contains;
            invObj.GetComponent<Inventory>().transferring = "Nothing";
        }
    }

    void PickingFromSlot()
    {
        if (contains != "Nothing")
        {
            invObj.GetComponent<Inventory>().transferring = contains;
        }

        if (invObj.GetComponent<Inventory>().transferring == contains)
        {
            invObj.GetComponent<Inventory>().transferring = invObj.GetComponent<Inventory>().transferring;
            contains = "Nothing";
        }
    }
}