Imagine taking a dog for a walk
Person i = new Person();
i
is the handle of the dog lead. It is in your hand. The other end of the lead is attached to the dog (the new Person
is the dog). The handle in your hand is a reference to the dog
Now imagine a friend comes with you on this walk. They also have a lead.
lst.Add(i);
Now your friend lst
has attached their lead to the dog. One dog, two leads, two people. Both leads are connected directly to the dog
lst[0] = null;
Now your friend has disconnected their lead from the dog. Your lead is still connected to the dog. Their disconnection has no impact on your lead's connection to the dog
lst[0] = i;
Their lead is reconnected directly to the dog. This is another important point. This line of code does not connect their lead to the handle of your lead. There is no "chaining leads together so that the dog is held on one longer lead". The connections are always direct to the dog, which means that disconnections don't affect other connections
If you want the dog to run off and get picked up by the dog warden (garbage collector) you'll have to disconnect both leads
lst[0] = null;
i = null;
Bye bye, Fido!