Unsafe string pointer statement
.net, c#, fixed-statement, unsafe
Solution
This is because the `[]` operator on the string is a method that returns a value. Return value from a method when it is a primitive value type does not have an address.
`[]` operator in C# is not the same as `[]` in C. In C, arrays and character strings are just pointers, and applying `[]` operator on a pointer, is equivalent to moving the pointer and dereferencing it. This does not hold in C#.
Actually there was an error in the MSDN documentation you linked, that is fixed in the latest version.
See here for more explanation on this exact matter.
Problem
As I understood, according to MSDN C# fixed statement should work like: ``` fixed (char* p = str) ... // equivalent to p = &str[0] ``` so, why I can`t do this? ``` const string str = "1234"; fixed (char* c = &str[0]) { /// ..... } ``` How can I get pointer to `str[1]`, for an example?