Web検索はbingがおすすめ!

??= 演算子 (null 合体演算子) の意味 - C#

概要

??= 演算子の意味と動作を紹介します。
??= 演算子は「null 合体演算子」と呼ばれており、nullの場合の処理を分けることができます。
メモ
?? 演算子についてはこちらの記事を参照してください。

書式

(代入先変数) ??= (値 または 変数)

意味

??=演算子の左辺 (代入先変数) の値が null の場合、演算子の右辺 (値、変数) の値を代入します。

記述例

text変数がnullの場合、空文字列を代入します。
text ??= "";

weight変数がnullの場合、init_weight変数の値を代入します。
weight ??= init_weight;

if文での書き換え

下記コードは次のif文で書き換えられます。
??=演算子のコード
int? value1;
int value2;

value1 ??= value2;
if文で書き換えたコード
int? value1;
int value2;

if (value1 == null){
  value1 = value2;
}

/*
//または
if (value1 == null) value1 = value2;
*/

プログラム例

以下のプログラムを作成します。

UI

下図のUIを作成します。ラジオボタン、ボタン、テキストボックスを配置します。(下図ではボタンが2つ配置されていますが、button2 のみを利用します。)

コード

下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace NullOperatorDemo
{
  public partial class FormNullCoaleescingAssignmentOperator : Form
  {
    public FormNullCoaleescingAssignmentOperator()
    {
      InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
      string? MessageText;

      if (radioButton1.Checked == true) {
        MessageText = "正常です";
      }
      else {
        MessageText = null;
      }

      MessageText ??= "異常です";

      textBox1.Text = MessageText;
    }
  }
}

解説

下記のコードでは MessageText 変数を宣言し値を代入しています。 radioButton1 にチェックが付いている場合は "正常です" の文字列を代入します。 radioButton2 にチェックが付いている場合は null を代入します。
  string? MessageText;

  if (radioButton1.Checked == true) {
    MessageText = "正常です";
  }
  else {
    MessageText = null;
  }

MessageText 変数に「null合体演算子」を用いて代入します。MessageText の値が null の場合にのみ "異常です" の文字列を代入します。
  MessageText ??= "異常です";

MessageText変数の値をテキストボックスに表示します。radioButton1がチェックされている場合は「正常です」の文字列がテキストボックスに表示され、radioButton2がチェックされている場合は nullの変数に「異常です」の値が代入されるため、「異常です」の文字列がテキストボックスに表示されます。
  textBox1.Text = MessageText;

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


[radioButton1]がチェックされた状態でボタンをクリックします。テキストボックスに "正常です" の文字列が表示されます。


[radioButton2]をクリックしてチェックを変更します。[radioButton2]がチェックされている状態で[button2]をクリックします。


テキストボックスに「異常です」の文字列が表示されます。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2021-01-25
iPentec all rights reserverd.