카테고리 보관물: C#

C#

nullable 형식이 참조 형식입니까? i여기에 참조

내가 intnullable로 선언하면

int? i=null;

않습니다 i여기에 참조 형식이 될?



답변

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

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

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

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


답변

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

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

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

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


답변

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

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

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


답변

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


답변

널 입력 가능 유형은 참조 유형이 될 수 없습니다.

http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx


답변

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


답변