C#での「?(クエスチョンマーク)」の意味

C#

意外と検索だと「C# ?」や「C# クエスチョンマーク」で検索で引っかからないので、メモを残します。ついでに「??」「ダブルクエスチョンマーク」についても解説します。

スポンサーリンク

?(クエスチョンマーク)はnull条件演算子

C#ではオブジェクトや文字列などの参照型の値がnullの時にその変数に対してメソッドを呼び出すと、例外「NullReferenceException」が発生します。
「ぬるぽ」ってやつですね。

なので以下のように記述していました。

	public static string FirstCharacter(string s){
		if(s == null) {
			return null;
		}
		return s.Substring(0, 1);
	}

?(クエスチョンマーク)を使って書くと以下のようになります。

	public static string FirstCharacter(string s){
         //nullでも落ちない
		return s?.Substring(0, 1);
	}

?(クエスチョンマーク):(コロン)は三項条件演算子

ほかにも?(クエスチョンマーク)を使用する演算子に三項条件演算子があり、 ?: は、三項条件演算子といい、bool式を評価し、bool式の結果 (true または false) に応じて、2 つの式のいずれかの結果を返します。

構文は以下のようになります。

条件? trueの場合 : falseの場合

例えば以下のように使用します。

// 三項条件演算子を使ってnullかどうかを判定
int money = saifuObject.money == null ? 0 : saifuObject.money;

感のいい方は分かったと思いますが、三項条件演算子からnull条件演算子ができているようですね。

??(ダブルクエスチョンマーク)はnull合体演算子

null合体演算子は「??」の左辺がnullでなければ左辺を返し、nullであれば右辺を返します。

// null合体演算子を使ってnullかどうかを判定
int money = saifuObject.money ?? 0;

まとめ

本当はリファレンスで見るのが一番いいですが、意外とみんなリファレンス見ないんですよね。
私もそうですが。。。

エンジニア転職なら【Tech Stars Agent】

フリーランスを目指すなら【テックパートナーズカレッジ】

未経験者向けWEBスクール【SHElikes】

コメント

タイトルとURLをコピーしました