[解決済み】C#でクエスチョンマークを2つ並べるとどんな意味になるのか?
2022-01-11 21:24:40
質問
C#のコードは次のとおりです。
FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();
クエスチョンマークを2つ並べるとどうなる?
解決方法は?
null合体演算子で、三項(immediate-if)演算子とよく似ています。以下もご参照ください。 ?? 演算子 - MSDN .
FormsAuth = formsAuth ?? new FormsAuthenticationWrapper();
に展開されます。
FormsAuth = formsAuth != null ? formsAuth : new FormsAuthenticationWrapper();
というように、さらに展開されます。
if(formsAuth != null)
FormsAuth = formsAuth;
else
FormsAuth = new FormsAuthenticationWrapper();
英語では、"もし左側にあるものがNULLでなければそれを使い、そうでなければ右側にあるものを使え、という意味です。
なお、これらはいくつでも順番に使用することができます。次の文は、最初の非NULLを代入します。
Answer#
を
Answer
(すべてのAnswerがNULLの場合
Answer
はnull)。
string Answer = Answer1 ?? Answer2 ?? Answer3 ?? Answer4;
また、上記の展開は概念的には同じですが、各式の結果は一度しか評価されないということも述べておきます。これは、例えば式が副作用のあるメソッド呼び出しである場合、重要なことです。(この点を指摘してくれた@Joeyに感謝します)。
関連
-
[解決済み】 c++ "Incomplete type not allowed" クラス参照情報へのアクセスエラー (前方宣言による円環状依存性)
-
[解決済み】C#コンパイラーエラー。"すべてのコードパスが値を返すわけではない"
-
[解決済み】ログアウトと再ログインをせずに.bashrcの設定を再読み込みする方法とは?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] NULL-COALESCING 演算子のカスタム暗黙変換の不思議な挙動
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】主成分分析:colMeans(x, na.rm = TRUE)のエラー:'x'は数値でなければなりません。
-
[解決済み】アプリケーション起動メソッドで例外が発生 java.lang.reflect.InvocationTargetException
-
[解決済み】gitが「Pull is not possible because you have unmerged files」と言うのはなぜですか?
-
[解決済み】ActionController::InvalidAuthenticityTokenについて
-
[解決済み】データフレームで関数を適用する場合、dim(X)は正の長さでなければならない
-
[解決済み】git pullの取り消し、レポを古い状態に戻す方法
-
[解決済み】コレクションが変更され、列挙操作が実行されないことがある。
-
[解決済み] MIPSのフェッチアドレスがワード境界にアライメントされていないため、.align 4を使用したが、まだうまくいかない
-
[解決済み】mysqli_fetch_array() は、パラメータ 1 が mysqli_result であることを期待し、boolean は【重複】で与えられました。
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException: 行が見つかりません [重複]。