Я пытаюсь исправить ошибку, которую не могу воспроизвести (ура!). У меня есть трассировка стека, которая была скопирована пользователем, который изначально обнаружил проблему, и она показывает код, генерирующий исключение нулевой ссылки (которое не обрабатывается) в строке, которая проверяет объект на нуль ... например:
private void someFunction()
{
radioButton1.CheckedChanged -= checkedChangedEventHandler
radioButton2.CheckedChanged -= checkedChangedEventHandler
if (someObject != null) // throws NullReferenceException...allegedly
{
if (someObject.Property == something)
{
// set properties on some UI components
}
}
}
Какие условия могли это вызвать?
ОБНОВЛЕНИЕ
Добавил еще код. Метод SomeFunction вызывается обработчиками событий checkedChanged.
ОБНОВЛЕНИЕ 2
Трассировка стека должна быть неправильной, как предлагали некоторые из вас. Нет перегрузок операторов, и метод ссылается только на четыре объекта, которые не являются компонентами пользовательского интерфейса (метки и переключатели), и все эти объекты назначаются только один раз при инициализации и ссылаются несколько раз, прежде чем когда-либо переходят к этому коду, поэтому любой нулевые ссылки были бы обнаружены задолго до этого. Придется более внимательно изучить вызывающую функцию обработчика событий.
Вот поток, объясняющий трассировку стека с неправильными номерами строк: