ここでこの質問をするのは嫌いですが、SO と Google の両方を検索しても成功しませんでした。私は多くの場所でwhile(var != -1)
、-1 への何らかの参照を含むステートメントやその他のステートメント (多くの場合ループ) を見てきました。-1の使用には特定の意味がありますか、それともブール値の整数表現などを与えるために使用されるだけですか? それが助けになるなら、私は主にC#プログラミングでこれを見てきました。
3 に答える
C#-1
では負の値です。彼らは数値と数値を比較して、それが実際に負の 1 に等しいかどうかを確認しています。
正の値のみを持つ必要がある整数フィールドを持つことは珍しくありません (たとえば、リスト内のインデックスを表す場合)。そのような場合、-1 が「有効な値ではない」ことを表すために使用されることがあります。アイテム、したがってインデックスはありません。int
anは null 許容ではないため、-1 を使用します。割り当てることはできませんnull
。
理論的には、これはおそらく悪い習慣です。「魔法の値」を使用して、本来あるべき以上の意味を持っています。理想的には、「有効でない」が変数が表す有効なものである場合、それはnull 許容整数 (int?
またはNullable<int>
) である必要がありますが、これは古い規則 (null 許容 int の機能を持たない他の言語から引き継がれたもの) であるため、排除するのは困難です。全体的に。
それについて特別なことは何もありません。ほとんどのフレームワークとライブラリでは、コレクション内の要素のインデックスを返す関数またはメソッドは、探しているものがコレクションにない場合に -1 を返します。
たとえばb
、文字列内の文字のインデックスは、 foo
JavaScript、.NET、および私が覚えている限りでは Java で -1 になります。
非常に多くの開発者が、-1 が見つからないアイテムのインデックスであると言って、心の中で ROM を燃やしてきました。これで理由がわかります。
int に常に正の値が含まれている必要があることがわかっている場合 (たとえば、リスト内のアイテム カウントやインデックスの場合、-1 は一種の「予約値」になる可能性があるため、たとえば、カウントを -1 に割り当てます。 -1なので、実際の値がそこに入れられていないことがわかります。これは「null」のようなものです。
それ以外に-1に特別な意味はないと思います