У меня есть много фрагментов кода, которые нужно запустить один разво время инициализации.
Я должен использовать логический флаг таким образом, потому что он находится в событии
bool _fuse;
void PerformLayout()
{
Size size;
if (!_fuse)
{
size = _InitialContainerSize;
_fuse = true;
}
else
size = parent.Size;
// ...
}
Поскольку это происходит часто, я сделал кое-что, чтобы эта логическая переменная выглядела как предохранитель:
Итак Я сделал следующее:
bool _fuse;
void PerformLayout()
{
Size size;
if (!Burnt(ref _fuse))
size = _InitialContainerSize;
else
size = parent.Size;
// ...
}
Если оно инициализировано значением false, результат запроса один раз возвращает значение false, переключается на значение true, и последующие вызовы возвращают значение true.
public static bool Burnt(ref bool value)
{
if (!value)
{
value = true;
return false;
}
else
return true;
}
Конечно, это работает, но я не очень доволен и уверен, что есть более элегантные решения. Что бы вы выбрали?