C# LanguageNull 가능 유형


통사론

  • Nullable<int> i = 10;
  • int? j = 11;
  • int? k = null;
  • 날짜 시간? DateOfBirth = DateTime.Now;
  • 소수? 양 = 1.0m;
  • 부울? IsAvailable = true;
  • 숯? 편지 = 'a';
  • (유형)? variableName

비고

Nullable 유형은 null 뿐만 아니라 기본 유형의 모든 값을 나타낼 수 있습니다.

구문 T? Nullable<T> 줄임말입니다.

Nullable 값은 실제로 System.ValueType 객체이므로 boxed 및 unbox 될 수 있습니다. 또한, null null 인 객체의 값은 동일하지 않다 null 단지 플래그있어, 기준 물체의 값.

Nullable 개체 boxing 때 null 값은 null 참조로 변환되고 null 아닌 값은 Nullable 기본 형식으로 변환됩니다.

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

두 번째 규칙은 올바르지 만 역설적 인 코드로 연결됩니다.

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>

Null 가능 유형 관련 예