如果您反射(reflection) WPF System.Windows.Controls.Control
类,您可以看到:
public class Control : FrameworkElement
{
internal ControlBoolFlags _controlBoolField;
// [...]
internal bool ReadControlFlag(ControlBoolFlags reqFlag);
internal void WriteControlFlag(ControlBoolFlags reqFlag, bool set);
// I think it's clear what they do
// [...]
internal enum ControlBoolFlags : ushort
{
CommandDisabled = 8,
ContainsSelection = 128,
ContentIsItem = 16,
ContentIsNotLogical = 1,
HeaderIsItem = 32,
HeaderIsNotLogical = 4,
IsSpaceKeyDown = 2,
ScrollHostValid = 64,
VisualStateChangeSuspended = 256
}
}
所以我只想知道为什么 MS 选择这种方式来存储 boolean 值,而不是为每个标志使用
bool
字段。他们只是想为每个领域节省空间,这只是他们的编码风格吗?
最佳答案
有几个原因。一对包括:
关于c# - 为什么许多 WPF 类将 boolean 值存储为枚举标志?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18133604/