2011-01-17 2 views
1

다음을 명확히하고 싶습니다. 나는 그 참조 형 변수가 그 타입의 값을 포함 할 수있는 메모리 블럭에 대한 참조를 포함한다는 것을 안다. 그러나 그 값이 "new"키워드를 사용하여 할당되기 전에 참조는 단지 메모리의 빈 곳을 가리 킵니까?"new"키워드 이전 참조 유형 값

답변

6

할당되지 않은 필드는 null입니다.
null 참조는 아무데도 가리키는 것으로 생각할 수 있습니다.

+0

개체의 필드에만 적용된다는 점에 유의하십시오. 초기화되지 않은 로컬 변수는 특정 값을 가질 수 있습니다. –

+1

@Anon : 그건 사실이 아니야. CLR은 현지인에게 기본값을 할당합니다. 그러나 C# 컴파일러는이 코드를 볼 수 없습니다. http://stackoverflow.com/questions/3592274/initializing-null-variables-in-net/3592448#3592448 – SLaks

+0

@SLaks : C# 사양에는 기본 초기화가 필요하지 않습니다. 어쨌든 컴파일러가 .locals init을 내 보낸다는 것은 구현의 세부 사항이다. –

0

참조 유형에는 null이고 값 유형에는 기본값 (유형)입니다. 그러나 컴파일러는 할당되지 않은 필드와 변수를 사용하지 못하게합니다.

+0

할당되지 않은 필드를 사용하는 데는 아무런 문제가 없습니다. – SLaks

+0

네가 맞습니다. – tenor

+0

또 다른 방법은 * 필드가 항상 * 할당되므로 "할당되지 않은"필드를 볼 수 없습니다. 필드에 대한 저장 영역을 확보하면 메모리 관리자가 필드를 기본값으로 지정합니다. –