내가 int
nullable로 선언하면
int? i=null;
않습니다 i
여기에 참조 형식이 될?
답변
아니요, nullable은 구조체입니다. Nullable 구조체에는 두 가지 값이 있습니다.
- 데이터 유형의 값 (
int
forint?
,DateTime
forDateTime?
등) - 데이터 유형 값이 설정되었는지 여부를 알려주는 부울 값입니다. (
HasValue
이 속성입니다.)
데이터 유형의 값을 설정하면 구조체 HasValue
가 true로 변경 됩니다.
답변
에서 nullable 형식 (C # 프로그래밍 가이드) :
널 입력 가능 유형은 System.Nullable 구조체의 인스턴스입니다.
과
널 입력 가능 유형은 널 값을 지정할 수있는 값 유형 변수를 나타냅니다. 참조 유형에 따라 널 입력 가능 유형을 작성할 수 없습니다. 참조 유형은 이미 널값을 지원합니다.
따라서 참조 유형이 아닙니다.
답변
널 입력 가능 유형은 값 유형도 아니고 참조 유형도 아닙니다. 그것들은 값 유형과 비슷하지만 참조 유형의 몇 가지 속성이 있습니다.
당연히 nullable 유형은로 설정 될 수 있습니다 null
. 또한 nullable 형식은 일반 struct
제약 조건을 충족 할 수 없습니다 . 당신이 가진 nullable 형식 상자 때 또한, HasValue
동일을 false
, 당신이 얻을 null
대신 박스 nullable 형식의 포인터를 (비슷한 상황이 언 박싱 존재).
이러한 속성은 nullable 형식을 값이 아닌 형식으로 만들지 만 참조 형식도 아닙니다. 이들은 고유 한 널 입력 가능 유형입니다.
답변
Nullable 유형은 실제로 구조체입니다. 런타임은 지능적으로 null 값 설정을 처리하여 참조 유형이 아닌 경우 모양을 제공합니다 ….
답변
답변
대신 null을 전달할 수 있으므로 참조 형식을 nullable 형식으로 만들 필요는 없습니다.