0

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

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

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

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

如果您最终想要添加不同的状态,我可以理解这种情况,但是我会争论使用枚举。

4

5 回答 5

4

我能想象在这里使用的唯一原因int- 如果不止一件事可以同时在计时器中。验证它,如果此变量不用作计数器,则立即重构此代码:)

于 2012-10-19T22:29:54.927 回答
4

该人可能不知道Boolean。此外,可能跟踪的状态int比实际评论的要多。

说了这么多,我同意,根据代码中的这些注释,我会使用 a bool,如果需要超过 2 个状态,我会使用 a Enum,但同样,我真的不知道你从中得到的代码库。

于 2012-10-19T22:30:53.337 回答
4

如果您需要int使用bool原子操作,例如Interlocked.CompareExchange.

PS:我知道Interlocked.CompareExchange<T>,但它是在 .NET 3.5 中引入的,仅支持引用类型。

于 2012-10-19T22:36:17.330 回答
1

如果它打算像 a 一样使用,请bool使用 a bool。这将使其他开发人员更容易理解其意图。整数不会阻止任何人分配高于 1 的值,并且 bool 仅限于使用trueor false

于 2012-10-19T22:29:13.943 回答
1

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

于 2012-10-19T22:32:34.193 回答