C # 내에서 DateTime 인스턴스에 값이 할당되었는지 확인하는 쉬운 방법이 있습니까?
답변
C #에 값이 할당되지 않은 변수를 갖는 유일한 방법은 변수가 로컬 변수가되는 것입니다.이 경우 컴파일 타임에 변수를 읽으려고 시도하여 변수가 지정되지 않았다는 것을 알 수 있습니다. )
나는 당신이 정말로 원한다고 생각합니다 Nullable<DateTime>
(또는 DateTime?
C # 구문 설탕으로)-그것을 null
시작한 다음 정상적인 DateTime
값 을 지정하십시오 (적절하게 변환 될 것입니다). 그런 다음 “실제”값이 설정되어 있는지 확인 null
하기 위해 HasValue
속성을 사용하거나 비교할 수 있습니다 .
답변
당신은 그렇게 의미합니까?
DateTime datetime = new DateTime();
if (datetime == DateTime.MinValue)
{
//unassigned
}
또는 Nullable을 사용할 수 있습니다
DateTime? datetime = null;
if (!datetime.HasValue)
{
//unassigned
}
답변
이것을 어딘가에 넣으십시오 :
public static class DateTimeUtil //or whatever name
{
public static bool IsEmpty(this DateTime dateTime)
{
return dateTime == default(DateTime);
}
}
그때:
DateTime datetime = ...;
if (datetime.IsEmpty())
{
//unassigned
}
답변
DateTime은 값 형식이므로 절대 null 일 수 없습니다. DateTime을 생각하십니까? (Nullable)을 사용할 수 있습니다 :
DateTime? something = GetDateTime();
bool isNull = (something == null);
bool isNull2 = !something.HasValue;
답변
할당되지 않은 날짜 시간에 대한 GetHashCode ()가 항상 0이라는 것을 알았습니다. 이 동작이 표시되는 이유에 대한 문서를 찾을 수 없기 때문에 이것이 null 날짜 시간을 확인하는 좋은 방법인지 확실하지 않습니다.
if(dt.GetHashCode()==0)
{
Console.WriteLine("DateTime is unassigned");
}
답변
Nullable<DateTime>
가능하면 사용하십시오 .
답변
기본값은 항상 new DateTime()
입니다. 그래서 우리는 쓸 수 있습니다
DateTime datetime;
if (datetime == new DateTime())
{
//unassigned
}
