値がnullの場合に空文字列を代入するシンプルなコードを紹介します。
下図のフォームを作成します。
以下のコードを準備します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace NullCoalescingOperator
{
public partial class FormNullString : Form
{
public FormNullString()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string value = getInfo();
if (value == null) {
throw new NullReferenceException("値がnullです。");
}
textBox1.Text = value;
}
private string? getInfo()
{
Random r = new Random();
if (r.NextDouble() < 0.5) {
return "Penguin";
}
else {
return null;
}
}
}
}
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックすると、50%の確率でテキストボックスに"Penguin"の文字列が表示され、それ以外の場合は例外が発生します。
例外が発生しないように、getInfo()メソッドの戻り値がnullの場合に、value変数に空文字列を代入する処理に変更します。
button1のclickイベントハンドラのコードを以下に変更します。
private void button1_Click(object sender, EventArgs e)
{
string value;
string result = getInfo();
if (result != null){
value = result;
}
else{
value = "";
}
if (value == null) {
throw new NullReferenceException("値がnullです。");
}
textBox1.Text = value;
}
上記のコードで例外は発生しなくなりますが、代入部分のコードをもっとシンプルに記述したいです。
null合体演算子を利用すると、nullの場合の値の代入をシンプルに記述できます。
button1のclickイベントハンドラのコードを以下に変更します。
??
演算子により、getInfo() メソッドの戻り値がnullの場合は、value変数に空文字列を代入します。
??演算子 (null合体演算子) の動作の詳細についてはこちらの記事を参照して下さい。
private void button1_Click(object sender, EventArgs e)
{
string value = getInfo() ?? "";
if (value == null) {
throw new NullReferenceException("値がnullです。");
}
textBox1.Text = value;
}