Looking for c# Answers? Try Ask4KnowledgeBase
Looking for c# Keywords? Try Ask4Keywords

C# LanguageNullable型


構文

  • Nullable<int> i = 10;
  • int? j = 11;
  • int? k = null;
  • 日付時刻? DateOfBirth = DateTime.Now;
  • 小数?量= 1.0m;
  • ブール? IsAvailable = true;
  • チャー文字= 'a';
  • (タイプ)? variableName

備考

Nullable型は、基底型のすべての値とnullを表すことができnull

構文T? Nullable<T>省略形です。

null System.ValueTypeな値は実際にはSystem.ValueTypeオブジェクトなので、ボックス化およびボックス化解除することができます。また、 null可能オブジェクトのnull値は参照オブジェクトのnull値と同じではなく、単なるフラグです。

null可能なオブジェクトboxingの場合、null値はnull参照に変換され、 null以外の値はnull不可能な基底型に変換されます。

DateTime? dt = null;
var o = (object)dt;
var result = (o == null); // is true

DateTime? dt = new DateTime(2015, 12, 11);
var o = (object)dt;
var dt2 = (DateTime)dt; // correct cause o contains DateTime value

2番目のルールは正しいが逆説的なコードにつながります:

DateTime? dt = new DateTime(2015, 12, 11);
var o = (object)dt;
var type = o.GetType(); // is DateTime, not Nullable<DateTime>

短い形式で:

DateTime? dt = new DateTime(2015, 12, 11);
var type = dt.GetType(); // is DateTime, not Nullable<DateTime>

Nullable型 関連する例