У меня много фрагментов кода, которые необходимо выполнить один раз во время инициализации.
Я должен использовать логический флаг таким образом, потому что он находится в событии
bool _fuse;
void PerformLayout()
{
Size size;
if (!_fuse)
{
size = _InitialContainerSize;
_fuse = true;
}
else
size = parent.Size;
// ...
}
Поскольку это случается часто, я сделал что-то, чтобы эта логическая переменная выглядела как fuse :
Итак, я сделал это:
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;
}
Конечно, это работает, но я только умереннодоволен и уверен, что есть более элегантные решения.Что будет твоим?