[解決済み】|と||や演算子の違いは何ですか?
質問
私はいつも
||
(C#でもPHPでも、OR式では(2本のパイプ)。時折、1本のパイプが使われているのを見かけます。
|
. この2つの使い方はどう違うのでしょうか?また、この2つの使い方は互換性があるのでしょうか?
どのように解決するのですか?
と同じように
&
と
&&
演算子の場合、double 演算子は "short-circuit" 演算子である。
例えば
if(condition1 || condition2 || condition3)
条件1が真の場合、条件2と3はチェックされない。
if(condition1 | condition2 | condition3)
これは、1がすでに真であっても、2と3の条件をチェックします。条件は非常に高価な関数であるため、これを使用することでパフォーマンスを向上させることができます。
一つ大きな注意点があり、NullReferencesやそれに類する問題です。例えば
if(class != null && class.someVar < 20)
classがNULLの場合、if文は
class != null
が偽であることを示します。もし、& だけを使った場合は
class.someVar
と表示されます。
NullReferenceException
. Or-Operatorの場合、何か悪いことを引き起こす可能性は低いので、それほど罠ではないかもしれませんが、覚えておくとよいでしょう。
を使う人はいないでしょう。
&
または
|
ただし、各条件が必ず実行されなければならない関数であるような設計の場合は別です。デザイン臭く聞こえるかもしれませんが、時には(稀に)それがきれいな方法であることもあります。その
&
演算子は、これら 3 つの関数を実行し、そのうちの 1 つが false を返したら else ブロックを実行します。
|
は、どれもfalseを返さなかった場合のみelseブロックを実行します。
2つ目の用途として
|
と
&
演算子を使用します。
ビット単位の演算
.
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] IEnumerable<T> と IQueryable<T> を比較する。
-
[解決済み] PHPのHTTP_HOSTとSERVER_NAMEの違いは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない