[C#] DateTime “널”값

많이 검색했지만 해결책을 찾지 못했습니다. 초기화되지 않은 값 (null에 해당)을 포함 할 수있는 DateTime을 어떻게 처리합니까? DateTime 속성 값이 설정되었거나 설정되지 않은 클래스가 있습니다. 속성 홀더를 DateTime.MinValue로 초기화하여 쉽게 확인할 수 있다고 생각했습니다. 나는 이것이 매우 일반적인 질문이라고 생각합니다. 어떻게합니까?



답변

일반적인 DateTimes의 경우 초기화하지 않으면 DateTime.MinValue참조 유형이 아닌 값 유형이기 때문에 일치 합니다.

다음과 같이 nullable DateTime을 사용할 수도 있습니다.

DateTime? MyNullableDate;

또는 더 긴 형태 :

Nullable<DateTime> MyNullableDate;

마지막으로 모든 유형의 기본값을 참조하는 내장 된 방법이 있습니다. 이것은 null참조 유형을 반환 하지만 DateTime 예제에서는 다음과 동일을 반환합니다 DateTime.MinValue.

default(DateTime)

또는 최신 버전의 C #에서는

default


답변

.NET 2.0 이상을 사용하는 경우 널 입력 가능 유형을 사용할 수 있습니다.

DateTime? dt = null;

또는

Nullable<DateTime> dt = null;

나중에 :

dt = new DateTime();

그리고 당신은 값을 확인할 수 있습니다 :

if (dt.HasValue)
{
  // Do something with dt.Value
}

또는 다음과 같이 사용할 수 있습니다.

DateTime dt2 = dt ?? DateTime.MinValue;

자세한 내용은 여기 ( http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx)를 참조하십시오.


답변

날짜 시간? MyDateTime {get; set;}

MyDateTime = (dr["f1"] == DBNull.Value) ? (DateTime?)null : ((DateTime)dr["f1"]);


답변

다음과 같은 방식으로 작동

myClass.PublishDate = toPublish ? DateTime.Now : (DateTime?)null;

PublishDate 속성은 DateTime이어야합니까?


답변

nullable types 사용을 고려할 것 입니다.

DateTime? myDate대신에 DateTime myDate.


답변

DateTime변수가 될 수는 없지만 컴파일러 오류없이 null비교할 수 있음을 지적 할 가치가 있습니다 null.

DateTime date;
...
if(date == null) // <-- will never be 'true'
  ...


답변

널 입력 가능 클래스를 사용할 수 있습니다.

DateTime? date = new DateTime?();