Я использую регулярное выражение в Unity (Unity2020.3 с Visual2019).
Как показано на рисунке ниже.
Я могу использовать groups[str] для получения группы.
Но во время отладки просмотр его вызовет ошибку.

Решение проблемы
Я только что рассмотрел это и сначала подумал: ну, это может быть результатом какого-то побочного эффекта, которого отладчик пытается избежать. Однако в других случаях отладчик успешно оценивает выражения с побочными эффектами.
Поэтому я проверил соответствующий код и обнаружил кое-что странное. Это реализация двух индексаторов:
public Group this[int groupnum] => GetGroup(groupnum);
public Group this[string groupname]
{
get
{
if (_match._regex == null)
{
return Group._emptygroup;
}
return GetGroup(_match._regex.GroupNumberFromName(groupname));
}
}
Поскольку оценка приводит к «произошла одна или несколько ошибок», я подумал, что проблема должна быть либо в GetGroupметоде, либо в GroupNumberFromNameметоде. Однако оценка groups[1]действительно возвращает группу в порядке.
Так что это должно быть GroupNumberFromName, верно?
Ну, я также оценил, rx.GroupNumberFromName("TheGroup")и он возвращается 1, как и должно, без каких-либо проблем.
Так что я оценил groups[rx.GroupNumberFromName("TheGroup")], и это тоже работает. Это практически то же самое, что делает внутренний индексатор строковых параметров. Однако по какой-то причине у отладчика возникают проблемы с оценкой выражения.
Поэтому я бы предположил, что какое-то странное поведение/ошибка в отладчике/анализаторе кода вызывает такое поведение. Может быть, кто-то, кто действительно работает с отладчиком, может пролить свет на этот вопрос, хотя я не думаю, что мы получим гораздо больше информации по этому вопросу. Кажется, это загадочное ограничение отладчика. Отчет об ошибке не помешал бы, я думаю.
Лично я всегда стараюсь избегать слишком сложных выражений в окне просмотра, особенно тех, которые могут иметь побочные эффекты.
Комментариев нет:
Отправить комментарий