我有很多代码必须在初始化期间运行一次。
我必须以这种方式使用布尔标志,因为它在一个事件中
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;
}
当然,它有效,但我只是适度满意,我相信还有更优雅的解决方案。什么是你的?