This is to do with the way Csharp handles reference types when passed through a function interface - this article will hopefully explain it : https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/method-parameters
The relevant part is :
For reference (class
) types, a copy of the reference is passed to the method. Parameter modifiers enable you to pass arguments by reference.
So a copy of the reference is given to the list. If you don't reassign point, both copies of the reference are aligned and pointing to the same object. When you reassign point, the reference of the resassigned one changes, but the copy (within the list) doesn't, hence it not reflecting the change.