20.08.2024, 17:17 | #1 |
Участник
|
Как гарантированно проверить что объект = null
Привет.
При проверке на null бывают интересные случаи. Например, добавили контрол на форме X++: formStringControl = element.design().addControl(FormControlType::String, "TestControl"); X++: element.design().removeControl(formStringControl.id()); Если же в коде проверять X++: if (formStringControl) Но попытка вызвать на ней любой метод приводит к исключению. Как можно предупредить такие случаи и понять что объект за ссылкой уже убит и она невалидна ? Ведь отладчик как-то это понимает при отображении значения в окне просмотра значений переменных. Есть обходной способ - не хранить ссылки на контролы, а запоминать их идентификаторы и по мере надобности каждый раз доставать контрол по идентификатору. X++: formStringControl = element.design().addControl(FormControlType::String, "TestControl"); id = formStringControl.id(); ... element.design().removeControl(id); ... if (id) { formStringControl = element.design().control(id); if (formStringControl) // безопасная проверка - точно можно понять контрол еще жив или нет ... } |
|