Your code doesn't work because Player is a struct (value types) so in your draw function, you actually add card to a copy version of an element in players array (which is selectedPlayer). Answer of @workingdog works because it modify array element directly