使用int vs bool

时间:2012-10-19 22:27:10

标签: c# .net

我正在查看一些代码,我看到一行如下所示:

// 1 if timer is executing, else 0
private int _inTimer;

这似乎是一个二进制标志。你要么在计时器中,要么你不是。

为什么要将此声明为int而不是bool?

如果您最终想要添加不同的状态,我可以理解该场景,但后来我会争论使用枚举。

5 个答案:

答案 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仅限于使用truefalse

答案 4 :(得分:1)

事实上,没有理由在这里使用intbooleanenum显然是更好的选择,但我不会为这么小的事情烦恼。我敢打赌,有更多的彻底改变可以使代码更好,而不是专注于像这样的小事。