0

コードを見ていると、次のような行が表示されます。

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

これはバイナリ フラグのようです。あなたはタイマーの中にいるか、そうでないかのどちらかです。

これを bool ではなく int として宣言したいのはなぜですか?

最終的に別の状態を追加したい場合は、シナリオを理解できますが、列挙型を使用すると主張します。

4

5 に答える 5

4

ここで使用することを想像できる唯一の理由int-一度に複数のものがタイマーに入る可能性がある場合。それを確認し、この変数がカウンターとして使用されていない場合は、このコードをすぐにリファクタリングしてください:)

于 2012-10-19T22:29:54.927 に答える
4

その人は について知らなかったかもしれませんBooleanintまた、実際にコメントされているよりも多くの州が追跡されている可能性があります。

そうは言っても、コード内のコメントに基づいて、私は を使用しbool、2 つ以上の状態が必要な場合はを使用していたことに同意しますEnumが、繰り返しますが、の実装の詳細はよくわかりません。あなたがそれを手に入れたコードベース。

于 2012-10-19T22:30:53.337 に答える
4

などのアトミック操作を使用する必要がある場合は、int代わりにを使用することをお勧めします。boolInterlocked.CompareExchange

PS: については知ってInterlocked.CompareExchange<T>いますが、.NET 3.5 で導入され、参照型のみをサポートしています。

于 2012-10-19T22:36:17.330 に答える
1

のようboolに使用する場合は、 を使用しboolます。他の開発者が意図を理解しやすくなります。整数は、1 より大きい値を代入することから誰も遠ざけることはなく、bool はtrueorのみを使用するように制限されていfalseます。

于 2012-10-19T22:29:13.943 に答える
1

int確かに、ここでan を使用する理由はありません。明らかにより良い選択はa booleanorですが、私はそのような小さなことを気にしません。enumこのような小さなことに焦点を当てるのではなく、コードを改善できる抜本的な変更がもっとあるはずです。

于 2012-10-19T22:32:34.193 に答える