As the following code is possible in C#, I am intersted whether string is actually an array of chars:
string a=\"TEST\";
char C=a[0]; // will be T
A string object contains a continuous block of characers, just like an array of characters, but the string object neither is, nor contains an array object.
The compiler knows that the string string is immutable, so it can do certain optimisations when you access a string, in the same manner that it does optimisations when you access an array. So, when you access a string by index, it's likely that the code ends up accessing the string data directly rather than calling an indexer property.