Поделиться через


C#, режим "Изменить и продолжить": ошибка 4029

При включенном режиме "Изменить и продолжить" изменение метода в контексте универсального типа приведет к завершению сеанса отладки.

Эта ошибка указывает, что предпринята попытка изменить метод (универсальный или нет), свойство, индексатор, событие, оператор, конструктор или деструктор универсального типа. Режим "Изменить и продолжить" не поддерживает этот тип изменений во время отладки.

Рассмотрим следующий код.

static class Utils<T> where T: System.IComparable

{

   public static T Max(T item1, T item2)

   {

      if (item1.CompareTo(item2) > 0)

         return item1;

      return item2;

   }

}

class Program

{

   static void Main(string[] args)

   {

      int max = Utils<int>.Max(10, 20);

   }

}

Если добавить точку останова на строке if (item1.CompareTo(item2) > 0), затем начать отладку приложения и попробовать изменить > 0 на >= 0, возникнет эта ошибка.

Исправление этой ошибки

  • Отмените изменения и затем продолжайте отладку без изменений.

    —или—

    В меню Отладка выберите пункт Остановить отладку, затем внесите изменения в код и начните отладку заново.

См. также

Ссылки

Универсальные шаблоны (Руководство по программированию на C#)

Поддерживаемые изменения кода (C#)

Режим "Изменить и продолжить" (Visual C#)

Другие ресурсы

Ошибки и предупреждения режима "Изменить и продолжить" (C#)