2010-07-29 5 views
1

모든 개체에 기본값이 있습니까?모든 개체에 기본값이 있습니까?

예;

Guid guid = default(Guid);

; 00000000-0000-0000-0000-000000000000

DateTime dt = default(DateTime);

; 01/01/0001 00:00:00

모든 개체에 대해 true입니까? 모든 개체가 기본값으로 일부 값을 제공합니까? 나는 네가 그렇다고 가정 할 때 ... 맞습니까?

+0

왜 묻는거야? '예!'(또는'no!')는 코드에서 변경 될 것입니까? – pascal

+0

이 기본값은 기본값이 아닙니다.) –

답변

12

모든 개체에 기본값이 있습니까?

절대적으로 아닙니다. 예를 들어 "abc"문자열은 객체이지만 "기본값"은 아닙니다. 숫자 12는 개체이지만 "기본값"이 아닙니다.

그러나 모두 유형은 기본값을가집니다. 객체는 인스턴스 유형임을 기억하십시오. 런타임에 객체가 존재합니다. 유형은 컴파일 타임 개념입니다. 형식을 개체와 혼동하지 마십시오. 그들은 "The New York Times"라는 문자열과 오늘날의 New York Times의 실제 사본과 다르다. 참조 유형의 변수에 저장 될 수있다

값 또는 개체널 중 하나에 참조한다. 따라서 이름 "참조 유형": 참조 유형의 값은 참조 (또는 null)입니다. 값 형태의 변수에 저장 될 수있다

값은 해당 유형의 값것을 목적이다. 따라서 "값 유형"이라는 이름 - 값 유형의 변수 값은 값은입니다.

는 (나는 토론에서 포인터 타입을 생략, 우리의 목적을 위해, 모든 포인터 유형은 논리적으로 값 유형을 IntPtr과 동일한 것으로 가정한다.)

모든 참조 형의 기본값은 null 참조 값입니다.

숫자 값 유형 (int, decimal 등)의 기본값은 해당 유형의 0입니다. float와 같이 여러 개의 0 표현을 지원하는 유형은 양수의 0을 선택합니다. bool의 기본값은 false입니다. nullable 값 유형의 기본값은 해당 값 유형의 널 값입니다.

다른 값 유형의 기본값은 유형의 모든 필드를 의 기본값 인으로 설정하여 형성된 해당 유형의 값으로 재귀 적으로 정의됩니다.

분명합니까?

+0

"다른 값 유형의 기본값 ..." "구조체"라고 말하는 대신 "다른 값 유형"이라고 말한 것으로 나타났습니다. 'struct' 외에 다른 값 타입이 남아 있습니까? – Brian

+0

@ 브라이언 : 아니요. 나는 "구조체"라고 말할 수 있었지만, 그것은 목록에있는 다른 문장의 구조와 평행하지 않았을 것입니다. –

0

참조 유형에 대한 default은 null입니다.

+0

왜 downvote입니까? –

0

예. 참조 유형의 기본값은 null이고 값 유형은 언급 한 것과 동일하며 기본값은 0과 동일한 특정 값입니다.

5

" 참조 용으로 null 반환 숫자 값은 유형입니다."

http://msdn.microsoft.com/en-us/library/xwth0h0d%28v=VS.80%29.aspx

은 좀 더 설명 할 수 있습니다.

+0

이상한 점 :'default (DateTime)'은'00/00/0000 00 : 00 : 00'이 아닌 '01/01/0001 00 : 00 : 00'입니까? – sunside

+1

@ Markus : 0 년이 없었기 때문에 아무런 달이없고 아무 달도 0이 없습니다! 0/0/0000도 * *를 의미합니까? (덧붙여 말하자면 JavaScript의 "0 일"을 요구하면 이전 달의 마지막 날이됩니다. 이것은 혼란스럽고 이상한 일이며, 0 일을 요구하는 것은 * 오류 *이어야합니다.) –

+0

@Eric : 고맙습니다, Captain Obvious. : D * scnr * 제 질문은'default()'가'[숫자 값 타입에 대해 0을 반환하기 때문에]이 결과를 산출하는 이유입니다. – sunside

1

예. 값 유형은 정의 된대로 기본값을가집니다. 숫자 값의 기본값은 0이고 부울 값의 기본값은 false입니다. 자세한 내용은 여기를 참조하십시오. http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx

참조 유형은 기본적으로 null입니다.

+0

왜 -1일까요? 링크는 질문에 따라 C#에 대한 다른 유형의 적절한 기본값을 나열합니다. 제발 깨달으십시오 –

관련 문제