マッピィ Techlog

日々思うこと

【C#】null許容型

前の話ですが、C#2.0以降で
int? x = 123;
というintの後ろに?をつける「null許容型(Nullable型)」が用意されたそうです。
周りでは見かけたことがなく、理解が浅かったので調べてみました。
(気になるきっかけはMore Effective C# 6.0/7.0の項目6を読んでいて)

  • null許容型は、元になる値型かnullを保持できる。
  • Nullable 型は、
     有効な値を持っているかを判定する bool HasValue
     その値を返す T Value
    というメンバを持つ。
  • HasValueがtrueの時にのみ、キャストが可能。
  • 演算はそのままできる。

「??」という「null合体演算子」というものもあるようです。

  • y, zをint?型として
    int? x = y ?? z;
    というのは、yが値を持っていたらyを、そうでなければzを代入する。

用途としては、「未定義」的な使い方ができそうですね。

enum Type{
 None = -1,
 First,
 Second,
 …

のようなNoneが不要になります。

  • 1以外の値が入っていてもnullとみなせますね。

これはいいなぁ…今度使ってみよう。

(参考)https://ufcpp.net/study/csharp/sp2_nullable.html

基礎からわかる C#

基礎からわかる C#