"DateTime"은 무엇입니까? C#의 의미?
문제
.Net 책을 읽고 있는데 코드 예제 중 하나에 다음 필드가 포함된 클래스 정의가 있습니다.
private DateTime? startdate
무엇을 DateTime?
평균?
해결책
부터 DateTime
는 struct
, 아니 class
, 당신은 DateTime
물체, 아니 참조, 해당 유형의 필드나 변수를 선언할 때.
그리고, 아까와 마찬가지로 int
수 없습니다 null
, 그래서 이거 DateTime
객체는 절대 될 수 없다 null
, 참조가 아니기 때문입니다.
물음표를 추가하면 널 입력 가능 유형, 의미하는 것은 어느 하나 이것은 DateTime
물체, 또는 그것은 null
.
DateTime?
구문 설탕은 다음과 같습니다. Nullable<DateTime>
, 어디 Nullable
그 자체는 struct
.
다른 팁
nullable DateTime입니다. ?
기본 유형/구조 뒤에는 그것이 null 허용 버전임을 나타냅니다.
DateTime은 null이 될 수 없는 구조입니다.에서 MSDN:
DateTime 값 유형은 Anno Domini 또는 A.D. 0001년 1월 1일 자정 12:00:00 범위의 값을 가진 날짜 및 시간을 나타냅니다.(서기 시대 또는 C.E.라고도 함)부터 서기 9999년 12월 31일 오후 11시 59분 59초까지(CE)
DateTime?
그러나 null일 수 있습니다.
ㅏ ? 값 유형의 접미사로서 그렇지 않으면 불가능한 null 할당이 허용됩니다.
http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx
기본 유형이 NULL 참조를 할당 할 수있는 값 유형 인 객체를 나타냅니다.
즉, 다음과 같이 작성할 수 있습니다.
DateTime? a = null;
if (!a.HasValue)
{
a = DateTime.Now;
if (a.HasValue)
{
Console.WriteLine(a.Value);
}
}
날짜 시간? 구문론적으로 다음과 같습니다. Null 가능<DateTime>.
Nullable< DateTime>과 동일합니다."?" 모든 원시 유형 또는 구조물에.
기본적으로 기본 요소에 대한 추가 상태를 제공합니다.값일 수도 있고 null일 수도 있습니다.값을 할당할 필요가 없는 상황에서 유용할 수 있습니다.따라서 예를 들어 datetime.min 또는 max를 사용하는 대신 null을 할당하여 값이 없음을 나타낼 수 있습니다.
아시다시피 DateTime은 구조체이므로 DateTime은 값 유형이므로 참조가 아닌 DateTime 객체를 얻습니다. 왜냐하면 DateTime은 클래스가 아니기 때문입니다. 해당 유형의 필드나 변수를 선언하면 값 유형이 null로 초기화될 수 없습니다. null을 허용하지 않습니다.마찬가지로 int도 null이 될 수 없습니다.따라서 DateTime 객체는 참조가 아니기 때문에 null이 될 수 없습니다.
그러나 때로는 null 허용 변수나 값 유형의 필드가 필요한 경우가 있습니다. 이때 물음표를 사용하여 null 허용 유형으로 만들어 null을 허용합니다.
예를 들어:-
날짜 시간?날짜 = null;
정수?정수값 = null;
위 코드에서 변수 날짜 DateTime의 객체이거나 null입니다.intvalue도 마찬가지입니다.