連載:[完全版]究極のC#プログラミング

Chapter5 null許容型

川俣 晶
2009/09/28

 本記事は、(株)技術評論社が発行する書籍『[完全版]究極のC#プログラミング ― 新スタイルによる実践的コーディング』から、許可を得て転載しています。
 同書籍は、もともと本フォーラムにて連載していた『C# 2.0入門』、『C# 3.0入門』の記事を整理統合し、加筆、修正されたものです。

  手元でまとめて読みたい方は、ぜひ書店などにてお買い求めください。

 【注意】本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

5.1 null許容型とは何か?

 「null許容型」とは、null値も扱える値型のことである。

 リスト5.1に実例を示す。値型の型名の後ろに「?」を付けるとnull許容型になる。

using System;

class Program
{
  private static void Sample(decimal? 価格)
  {
    if (価格 == null)
    {
      Console.WriteLine("価格はありません。");
    }
    else
    {
      Console.WriteLine("価格は税込み{0}円です。", 価格 * 1.05m);
    }
  }

  static void Main(string[] args)
  {
    Sample(100m);
    Sample(null);
    // 出力:
    // 価格は税込み105.00円です。
    // 価格はありません。
  }
}
リスト5.1 値型の型名の後ろに「?」を付けたnull許容型

 ここで、「decimal?」がnull許容型の例である。

 メソッドSampleの引数「価格」は、nullが許容されたdecimal型なので、decimal型の値である「100m」と「null」の双方を受け取ることができる。

 その結果として、価格は、「価格 == null」という式によってnullかどうかを判定することができると同時に、「価格 * 1.05m」のようなdecimal型の数値計算の対象とすることもできる。


 INDEX
  [完全版]究極のC#プログラミング
  Chapter5 null許容型
  1.5.1 null許容型とは何か?
    2.5.2 なぜnullを入れたいのか?
    3.5.3 null許容型の内部構造
    4.5.4 null合体演算子
    5.5.5 is演算子の挙動に注意
    6.5.6 3値論理型として使用できるbool?型
    7.5.7 nullを許容するとパフォーマンスに影響するか?/null許容への批判/練習問題
 
インデックス・ページヘ  「[完全版]究極のC#プログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間