Общие параметры отладки (VS2017): «Использовать режим управляемой совместимости» и структура с enum - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь отладить код с некоторой структурой

struct VirtualArrayTest
{
    private T[] Array;
    private TypeCurrentArray CurrentArray;
    private int StartPos;
    private int FinPos;

    public enum TypeCurrentArray
   {
    Main = 1,
    Temp
   }
    ....
}

И я не мог видеть текущие значения этих переменных (тип VirtualArrayTest). Я получаю сообщения "Среда выполнения не может оценить это выражение" . Если в моей структуре, у меня есть переменная CurrentArray (enum) .

Я могу решить эту проблему только установив опцию «Использовать режим управляемой совместимости». Правильно ли я решил эту проблему?

Я не понял, как это соотносится с официальной документацией относительно этой опции? Что означает «механизм отладки по умолчанию» и «устаревшая версия»? И почему «механизм отладки по умолчанию» не поддерживает проверку переменных этого типа?

1 Ответ

0 голосов
/ 21 апреля 2019

Дополнительная информация Проблема "Невозможность увидеть текущие значения переменной типа VirtualArrayTest" связана с наличием в структуре поля CurrentArray (enum).Можно решить и другим способом (не устанавливая опцию «Использовать режим управляемой совместимости»), заменив текущий вариант создания и инициализации структуры:

        VirtualArray ArrayInitial; 
        ArrayInitial.CurrentArray = TypeCurrentArray.Main;
        ArrayInitial.Array = arrInitial;
        ArrayInitial.IndxStart = 0;
        ArrayInitial.IndxLast = iNumElements - 1;

на:

 `VirtualArray ArrayInitial = new VirtualArray(arrInitial, TypeCurrentArray.Main);` 

или путем явного получения значения поля ArrayInitial.CurrentArray (после создания структуры первым способом), например, оно также будет работать:

var t =  ArrayInitial.CurrentArray;

После первогоВ момент явного получения значения этого поля VS2017 Debuger будет правильно показывать значение всех переменных этого типа (также без установленного параметра «Использовать режим управляемой совместимости»).Я не знаю, это ошибка или особенность.

...