ToList
will create a new list but in your case, since you are referencing a reference type (string), then the new list will contain references to the same objects as the original list.
Updating the myStrings property of an object referenced in the new list will also affect the equivalent object in the original list.
So there is no immediate difference between the two.
that answers your question to whether option b change myStrings itself.
regarding the performance, yes, there will be. As referenced in this post:
Yes, IEnumerable<T>.ToList()
does have a performance impact, it
is an O(n) operation though it will likely only require attention in
performance critical operations.
The ToList()
operation will use the [List(IEnumerable<T>
collection)
][2] constructor. This constructor must make a copy of the
array (more generally IEnumerable<T>
), otherwise future
modifications of the original array will change on the source T[]
also which wouldn't be desirable generally.
this will answer your second question, whether performance impacts will take place.