我正在查看一些代码,我看到一行如下所示:
// 1 if timer is executing, else 0
private int _inTimer;
这似乎是一个二进制标志。你要么在计时器中,要么你不是。
为什么要将此声明为int而不是bool?
如果您最终想要添加不同的状态,我可以理解该场景,但后来我会争论使用枚举。
答案 0 :(得分:4)
我可以想象在这里使用int
的原因 - 如果一次有多个东西可以在计时器中。验证它,如果此变量不用作计数器,则立即重构此代码:)
答案 1 :(得分:4)
此人可能不知道Boolean
。此外,可能还有更多状态被跟踪int
而不是实际评论。
所有这一切,我同意,根据代码中的这些评论,我会使用bool
,如果需要超过2个状态,我会使用Enum
但是再一次,我真的不知道你从中得到的代码库的实现细节。
答案 2 :(得分:4)
如果您需要使用Interlocked.CompareExchange
等原子操作,则可能需要使用int
而不是bool
。
PS:我知道Interlocked.CompareExchange<T>
,但它是在.NET 3.5中引入的,仅支持引用类型。
答案 3 :(得分:1)
如果打算像bool
一样使用,请使用bool
。它将使其他开发人员更容易理解其意图。一个整数不会让任何人分配高于1的东西,并且bool仅限于使用true
或false
。
答案 4 :(得分:1)
事实上,没有理由在这里使用int
,boolean
或enum
显然是更好的选择,但我不会为这么小的事情烦恼。我敢打赌,有更多的彻底改变可以使代码更好,而不是专注于像这样的小事。