Свойство создается автономно после наведения мыши (DataTip) во время отладки - PullRequest
1 голос
/ 15 мая 2019

Добрый вечер всем.Что-то действительно странное случилось со мной.После многих тестов я обнаружил, что в режиме отладки (Visual Studio 2017) после появления подсказки DataTip с помощью наведения мыши на свойство оно было независимо создано и установлено как пустое.Это ошибка в Visual Studio или есть причина, по которой это происходит?

    private List<int> myVar;
    public List<int> MyProperty
    {
        get
        {
            if (myVar == null)
            {
                myVar = new List<int>();
                return myVar;
            }
            else
                return myVar;
        }
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        List<int> list = MyProperty;
    }

Mouse hover on myVar

Как видите, если вы разместитеЕсли щелкнуть мышью на myVar, вы получите нулевое значение правильно, но если вы поместите его в MyProperty, оно будет создано автоматически, и сразу же будет создан экземпляр myVar.

Mouse hover on MyProperty Такое поведение создало для меня много проблем во время отладки, и мне потребовалось много времени, чтобы понять, что происходит.Это нормальное поведение или это ошибка?Пожалуйста, обратите внимание, что я не предоставил установленный аксессор.

1 Ответ

4 голосов
/ 15 мая 2019

Это нормальное поведение.

* Получатель 1005 * вызывает каждый раз, когда вы пытаетесь получить его значение.Зависание при отладке тоже считается .Если вы поместите курсор на myVar , избегая MyProperty, это будет myVar|null, но как только вы наведете курсор на MyProperty, активируется весь получатель, и вы увидите MyProperty|Count = 0.С тех пор myVar тоже myVar|Count = 0 (потому что он изменился в геттере).Если вы поставите счетчик, чтобы узнать, сколько раз вызывает геттер, вы увидите, как он меняется.

enter image description here

Кстати,

private List<int> myVar;
public List<int> MyProperty => myVar ?? (myVar = new List<int>());

делает то же самое, но выглядит аккуратнее;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...