意外と検索だと「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;
まとめ
本当はリファレンスで見るのが一番いいですが、意外とみんなリファレンス見ないんですよね。
私もそうですが。。。
コメント