Well, actually, you did.
This is not going to be too easy, without pictures and a quick check every now and then to see if your eyes are glazing over, but here goes...
You have a variable "players" which refers to a list of Player objects. Note that "players" is not the list itself, it is just a reference to it. The difference is that your list could be a set of physical cards containing names and addresses, and "players" could be a piece of paper saying "see card index set 'Names and Addresses'". You can have many pieces of paper, all referring to the same set of cards, but they are all different sheets of paper.
When you create a new list variable,
List<player> tempList = new List<player>();
You create a new sheet of paper, but this time it says "see card index set 'Temporary'" - it refer to a different set of cards, currently empty.
You then do this:
tempList = _players;
All this does is use a pencil eraser on the "tempList" sheet, running out all the information, and writing in "see card index set 'Names and Addresses'". It copies the
Reference
, not the content.
So when you randomize the set of card referred to by the "tempList" sheet, you are also randomizing the set of cards refered to by the "players" sheet (because they both refer to the same cards).
If you want to work with a different set of cards, then you have to copy the list to your new location. Try:
List<player> tempList = new List<player>();
tempList.AddRange(_players);
Player tempPlayer = new Player();
This will create a new list all referring to the same cards (because each item in the list is not the card, it is also a reference to the card - ah, look, your eyes are glazing over).
Does that make sense? I hope it does, because this is a very important concept, and if you don't understand it you are going to cause yourself real trouble in the future!
[edit]Fixed < and >, removed spurious closing tags - OriginalGriff[/edit]