nullable 형식이 참조 형식입니까?


답변:


136

아니요, nullable은 구조체입니다. Nullable 구조체에는 두 가지 값이 있습니다.

  1. 데이터 유형의 값 ( intfor int?, DateTimefor DateTime?등)
  2. 데이터 유형 값이 설정되었는지 여부를 알려주는 부울 값입니다. ( HasValue이 속성입니다.)

데이터 유형의 값을 설정하면 구조체 HasValue가 true로 변경 됩니다.

널 입력 가능 유형 (C # 프로그래밍 안내서)


26

에서 nullable 형식 (C # 프로그래밍 가이드) :

널 입력 가능 유형은 System.Nullable 구조체의 인스턴스입니다.

널 입력 가능 유형은 널 값을 지정할 수있는 값 유형 변수를 나타냅니다. 참조 유형에 따라 널 입력 가능 유형을 작성할 수 없습니다. 참조 유형은 이미 널값을 지원합니다.

따라서 참조 유형이 아닙니다.


14

널 입력 가능 유형은 값 유형도 아니고 참조 유형도 아닙니다. 그것들은 값 유형과 비슷하지만 참조 유형의 몇 가지 속성이 있습니다.

당연히 nullable 유형은로 설정 될 수 있습니다 null. 또한 nullable 형식은 일반 struct제약 조건을 충족 할 수 없습니다 . 당신이 가진 nullable 형식 상자 때 또한, HasValue동일을 false, 당신이 얻을 null대신 박스 nullable 형식의 포인터를 (비슷한 상황이 언 박싱 존재).

이러한 속성은 nullable 형식을 값이 아닌 형식으로 만들지 만 참조 형식도 아닙니다. 이들은 고유 한 널 입력 가능 유형입니다.


6

Nullable 유형은 실제로 구조체입니다. 런타임은 지능적으로 null 값 설정을 처리하여 참조 유형이 아닌 경우 모양을 제공합니다 ....


2
나는 '지능적으로 다루기'를 오히려 주관적으로 쿼리하고 싶습니다. 개인적으로 나는 행동이 혼란스럽고 종종 성가시다.
nicodemus13


0

대신 null을 전달할 수 있으므로 참조 형식을 nullable 형식으로 만들 필요는 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.