2010-03-02 5 views
0

현재 라이브러리로 작업 중이며 이미 만든 기능을 사용할 때 이상한 점을 발견했습니다 (캐스팅을해야하는 곳). 형식을 Null로 지정할 수있는 경우 Nullable을 사용하는 이유는 무엇입니까?

라이브러리

이 기능은
public DateTime? GetDate(){..} 

이 점은 무엇입니까

다음과 같이 정의했다? 날짜를 가져 오는 데 약간의 오류가있는 경우 정상적으로 DateTime으로 만들고 null을 반환하는 것이 가장 좋은 이유는 무엇입니까? Nullable 유형에 중요한 내용이 누락 되었습니까?

+5

DateTime은 .NET 구조체가 아닙니까? 그것은 가치 유형이라는 것을 의미합니까? –

+1

mg. 그래, 네 말이 맞아. 나는 바보 같아. 누군가 이걸 끝내거나 내게 바보 같다고 대답 할 수있어. – Earlz

+0

그래, 어떤 이유로 나는 DateTime이 값 유형이라는 것을 아직 발견하지 못했다. 나는 DateTime에 Null을 할당 할 이유가 없다고 생각한다. – Earlz

답변

10

DateTime은 .NET 값 유형이기 때문에. int 및 char와 마찬가지로 null 일 수 없습니다.

0

값 형식은 Null 일 수 없습니다. Nullable (흔히 DateTime?이라고 쓰는)은 null 값을 가질 수 있습니다. 이는 모든 값 유형에도 적용됩니다. 변수에 유효한 정수 또는 Null을 유지하려면 값 유형을 Int32?으로 선언해야합니다.

Nullable 문자열을 사용할 수 없습니다. 나는 문자열이 참조 형이지만 여러 가지면에서 값 형처럼 행동하기 때문에 이것을 언급한다. 나는 사람들이 Nullable을 선언하려고 노력해왔다. (좋아, 나도 인정했다.)

1

DateTime은 값 유형입니다. 할당 된 값은 null 일 수 없습니다.

편집 :? 참조 형식의 연산자는 다음과 같은 오류를 얻을 :이 값 형식이기 때문에

The type 'object' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Nullable'

0

DateTime는 구조 때문에 유효한 널 (NULL)입니다. 하지만 당신이 옳다면 이미 null을 할당받을 수 있기 때문에 참조 타입을 nullable로 만들 수 없습니다.

0

일부 유형은 참조 유형이 아닙니다. 예를 들어

int x = null; 

과 같이 할 수 없으므로 int은 값 유형입니다. DateTime은 값 유형입니다.

0

날짜 시간이 null 일 수 없습니다 "왜 그냥 일반 날짜 시간하고 null을 반환하지."

관련 문제