我在看一些代码,我看一条线,看起来像这样:使用INT VS布尔
// 1 if timer is executing, else 0
private int _inTimer;
这似乎是一个二进制符号。你要么在计时器中,要么你不在。
你为什么要声明这是一个int,而不是一个布尔值?
我能理解的情况下,如果你最终想要添加不同的状态,但后来我认为使用枚举。
我在看一些代码,我看一条线,看起来像这样:使用INT VS布尔
// 1 if timer is executing, else 0
private int _inTimer;
这似乎是一个二进制符号。你要么在计时器中,要么你不在。
你为什么要声明这是一个int,而不是一个布尔值?
我能理解的情况下,如果你最终想要添加不同的状态,但后来我认为使用枚举。
如果您需要使用原子操作(例如Interlocked.CompareExchange
),则可能需要使用int
而不是bool
。
PS:我知道Interlocked.CompareExchange<T>
,但据介绍在.net 3.5,并且仅支持引用类型。
你完全钉住了这种情况。 – earthling
如果它打算像bool
使用,使用bool
。这将使其他开发人员更容易理解其意图。一个整数保持没有人远离分配高于1的东西,布尔仅限于使用true
或false
。
唯一的原因,我能想象使用int
在这里 - 如果超过一件事可能是在计时器一次。验证它,如果这个变量不作为计数器,比重构这个代码立即:)
的人可能并不了解Boolean
。此外,也许有更多的国家正在跟踪int
比实际评论。所有这一切说,我同意,基于代码中的这些意见,我会使用bool
,如果需要超过2个州,我会使用Enum
,但我再也不会知道你从中得到的代码库的实现细节。
事实上,没有理由在这里使用int
,boolean
或enum
显然是更好的选择,但我不会为这么小的事情烦恼。我敢打赌,有更多的更改可以使代码更好,而不是像这样小的东西。
并不是所有的代码都是完美的... –
该字段是否从外部来源填充? – Sklivvz
也许这是最初的C代码翻译成C#或由一个程序员编写,通常编码C –