Adding to a class list replaces all units in the list.

So basically, I think I’m doing this wrong, but I made a list public List<Player> Players = new List<Player>(); and a new Player instance public Player player = new Player();
Then in my code I change player.Name to [Some name] and player.Type to [Some type], then use Players.Add(player), which at point 0 should make a player with the name Some name and the type Some type. If I loop back through the code, and change the name and type, then add it, point 1 will contain a player with Some other name and Some other type, but it changes the player at point 0. Even if I add 10, every one changes ALL of the ones in the list when I use .Add. What am I doing wrong?

After some deeper researching I found it would work if rather than making a new player at the begining, which was probably my problem, if I store the data in temp strings/ints that I just reuse, and make a whole new Player at the time of adding it to the list with the constructor made inside the class.

public class Player //making the class
{
    public string Name;
    public int Type;

    public Player(string name, int type) //constructor
    {
        this.Name = name;
        this.Type = type;
    }
}

string name = "Player"; //you can change this later

int type = 0; //edit as you need and at the end it will be put into the new player

//assume we already made the list Players.
Players.Add(new Player(name, type)); //this slaps a whole new player with custom name and type. Now you can feel free to change the name and type all over again and repeat this line, over and over, and it'll keep making new ones