【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
- 作者: 西村誠
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2015/08/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る