Trying to understand strings better in C# Are these assertions correct? - string is immutable - string is reference type but behaves like value type For these code samples... string x = "one" (creates string instance holding "one" in memory) x = "two" (destroys "one" instance and creates new string instance holding "two" in memory, even though it is using the same variable x) If the above are correct, what happens in a string array when one index value changes? string[] array = new string[2]; array[0] = "boo"; (string "boo" created and held in 0 index) array[1] = "shoo"; array[0] = "moo"; Does the last assignment create an entire new array to change boo to moo? My best "guess" is that the array holds pointers so that array[0] simply points to the new string instance that holds "moo". Is this correct? If not, could someone please clarify, thanks.