2021年12月21日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!total 830 count

??演算子: null脱出の近道!!

Written By: 川俣 晶連絡先

この章のテーマ §

 null 合体演算子(??演算子)について学びます。null値は扱えない機能も多いやっかいな値ですが、容易に代理の値を指定できます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, string?型

解説 §

 null 合体演算子(??演算子)は、ある値がnullの時、別の値を指定する機能を持ちます。

 たとえば、x ?? yは、xがnullではないとき、xの値のままです。しかし、xがnullのときはyの値になります。

 サンプルソースの場合、Console.WriteLineメソッドにnullを渡すと何も出力しませんがそれでは分かりにくいので、"(NULL)"を出力させています。

罠の数々 §

  • null値はC#のプログラムで不可避に入り込んでくる値であるが、多くの場合処理できない。null 合体演算子の出番は割と多い
  • 最近のC# はnull非許容がデフォルトであるが、これはnull値が絶対発生しないことを保証するわけではない。たとえば、型名の末尾に?を付けてnull許容を宣言してしまえば(サンプルソースのstiring?参照)、null値を入れられるからである。やはり、null 合体演算子は必要になる
  • x ??= yという書き方も可能である。xがnullの場合のみ、yの値に置き換えられる

参考リンク §

?? および ?? 演算子 (C# リファレンス)

サンプルソース: nullCoalescingOperator §

sub("Hello");

sub(null);

void sub(string? s)

{

    Console.WriteLine(s ?? "(NULL)");

}

実行結果 §

Hello

(NULL)

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 以下のプログラムの実行結果を予測してみよう。

var x = 1;

var y = "SAMPLE";

y ??= (x++).ToString();

Console.WriteLine($"x={x} y={y}");

  1. x=1 y=1
  2. x=2 y=2
  3. x=1 y=SAMPLE
  4. x=2 y=SAMPLE
  5. x=1 y=(x++).ToString()

[[解答]]

Facebook

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2021年
12月
22日
is演算子: 値の型を調べてみよう
3days 0 count
total 856 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2021年
12月
20日
.(メンバー アクセス)演算子: 2つの役割の使い分けをマスターしよう!
3days 0 count
total 1181 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20211221085143
サイトの表紙【new_C#入門・全キーワード明快解説!】の表紙【new_C#入門・全キーワード明快解説!】のコンテンツ全リスト 【new_C#入門・全キーワード明快解説!】の入手全リスト 【new_C#入門・全キーワード明快解説!】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.