How do strings work when shallow copying something in C#?
Strings ARE reference types. However they are immutable (they cannot be changed), so it wouldn't really matter if they copied by value, or copied by reference.
If they are shallow-copied then the reference will be copied... but you can't change them so you can't affect two objects at once.
Consider this:
public class Person
{
string name;
// Other stuff
}
If you call MemberwiseClone, you'll end up with two separate instances of Person, but their name
variables, while distinct, will have the same value - they'll refer to the same string instance. This is because it's a shallow clone.
If you change the name in one of those instances, that won't affect the other, because the two variables themselves are separate - you're just changing the value of one of them to refer to a different string.