【发布时间】:2011-10-26 17:40:28
【问题描述】:
我从硬件接收到几个位域。
我的代码原来是:
public readonly byte LowByte;
public bool Timer { get { return (LowByte & 1) == 1; } }
然后我想起了 flags 枚举,正在考虑将其更改为:
[Flags]
public enum LowByteReasonValues : byte
{
Timer = 1,
DistanceTravelledExceeded = 2,
Polled = 4,
GeofenceEvent = 8,
PanicSwitchActivated = 16,
ExternalInputEvent = 32,
JourneyStart = 64,
JourneyStop = 128
}
public readonly LowByteReasonValues LowByte;
public bool Timer { get { return (LowByte & LowByteReasonValues.Timer) == LowByteReasonValues.Timer; } }
等等。
最佳做法是什么?每种方法的优缺点是什么?
编辑:我很想知道这两种方法之间是否存在任何实际差异,尤其是在性能方面。我不希望就编码风格征求意见(除非它来自微软指南),因为那样会认为这个问题没有建设性。谢谢。
【问题讨论】:
-
尝试从使用此代码的开发人员的角度来看待它。编写单元测试是做到这一点的一种好方法。编写示例(代码示例)是另一回事。哪种方式可以让开发人员编写最清晰的代码?对于客户端开发人员来说,哪种方式最直观?
标签: c# bit-fields