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?

Original source

Related problems