문제

.Net 책을 읽고 있는데 코드 예제 중 하나에 다음 필드가 포함된 클래스 정의가 있습니다.

private DateTime? startdate

무엇을 DateTime? 평균?

도움이 되었습니까?

해결책

부터 DateTimestruct, 아니 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도 마찬가지입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top