Ошибка на моей стороне?
Нет;ошибка в документации, на которую вы ссылаетесь.В нем говорится:
fixed (char* p = str) { /*...*/ } // equivalent to p = &str[0]
Комментарий неверный;как вы правильно заметили, нелегально брать адрес внутренней части строки.Допустимо использовать только адрес внутренней части массива.
Допустимыми инициализаторами для фиксированного оператора являются:
- Оператор адреса
&
, примененный к ссылке на переменную, - Массив
- Строка
- Буфер фиксированного размера.
str[0]
не является ссылкой на переменную, поскольку сначала строкаэлементы не являются переменными, и, во-вторых, потому что это вызов функции индексации, а не ссылка на переменную.И при этом это не массив, строка или буфер фиксированного размера, поэтому он не должен быть законным.
Я поговорю с менеджером документации и посмотрим, сможем ли мы это исправитьв более позднем пересмотре документации.Спасибо за то, что обратили на это мое внимание.
ОБНОВЛЕНИЕ: Я поговорил с одним из менеджеров документации, и они сообщили мне, что мы только что завершили крайний срок для следующего запланированного пересмотра документации.Предложенное изменение пойдет в очередь на доработку после следующего.