1) All strings in .NET are immutable. You never can change a content of any string. All string operations create a brand-new string. Keep it in mind when using string operations, especially highly misused concatenation ("+").
Compare:
string myString = "Immutable";
char charI = myString[0];
char[] myText = new char['M', 'u', 't', 'a', 'b', 'l', 'e', ' ', ];
myText[7] = '!';
In you want to concatenate strings repeatedly, always use
System.Text.StringBuilder
. More generally, whenever you need some effects of mutable string data, use this class. This class is not a string though; it's a container of character data with operations which you can convert to string via
object.ToString()
.
2) Not true. There is no "why". If flows how you define it.
—SA