많이 검색했지만 해결책을 찾지 못했습니다. 초기화되지 않은 값 (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이어야합니까?
답변
답변
DateTime
변수가 될 수는 없지만 컴파일러 오류없이 null
비교할 수 있음을 지적 할 가치가 있습니다 null
.
DateTime date;
...
if(date == null) // <-- will never be 'true'
...
답변
널 입력 가능 클래스를 사용할 수 있습니다.
DateTime? date = new DateTime?();