GOOGLE ADS

воскресенье, 1 мая 2022 г.

В Unity во время отладки, если я смотрю "System.Text.RegularExpressions.GroupCollection".Item[String], это дает ошибку

Я использую регулярное выражение в 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")], и это тоже работает. Это практически то же самое, что делает внутренний индексатор строковых параметров. Однако по какой-то причине у отладчика возникают проблемы с оценкой выражения.

Поэтому я бы предположил, что какое-то странное поведение/ошибка в отладчике/анализаторе кода вызывает такое поведение. Может быть, кто-то, кто действительно работает с отладчиком, может пролить свет на этот вопрос, хотя я не думаю, что мы получим гораздо больше информации по этому вопросу. Кажется, это загадочное ограничение отладчика. Отчет об ошибке не помешал бы, я думаю.

Лично я всегда стараюсь избегать слишком сложных выражений в окне просмотра, особенно тех, которые могут иметь побочные эффекты.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...