C #에서 유형의 클래스 인스턴스 변수의 기본값은 무엇 int?
입니까?
예를 들어, 다음 코드에서 MyNullableInt
명시 적으로 할당되지 않은 경우 어떤 값이 있습니까?
class MyClass
{
public int? MyNullableInt;
}
(답은 거의 확실하게 null
또는 0
일 것 같지만 그 중 어느 것입니까?)
답변
int?
-및 “type?”을 사용하는 nullable 유형 의 기본값입니다. 선언-입니다 null
.
그 이유 :
int?
구조체 인 Nullable <T> (여기서 T는int
) 유형의 구문 설탕입니다 . ( 참조 )Nullable<T>
유형은 갖는 부울 HasValue의 부재,false
상기 수Nullable<T>
인스턴스 (instance) “처럼 행동”null
값. 특히, Null 허용 <T가> .Equals 방법 돌아 겹쳐true
경우Nullable<T>
와HasValue == false
실제와 비교null
값.- 로부터 C # 언어 사양 11.3.4 , 구조체 인스턴스의 초기 기본 값은 기본 값으로 설정하는 구조체의 값 형식 필드의 모든 및 설정이 구조체의 참조 유형 필드의 전부입니다
null
. bool
C #에서 변수 의 기본값 은false
( reference )입니다. 따라서HasValue
기본Nullable<T>
인스턴스 의 속성 은false
; 그러면Nullable<T>
인스턴스 자체가null
.
답변
나는 일명 값 Nullable<T>.GetValueOrDefault()
을 사용하는 수학 계산으로 작업 할 때 특히 편리한 방법 을 공유하는 것이 중요하다고 느꼈습니다 . 속성 을 확인할 필요가없고 대신 사용할 수 있는 경우가 많습니다 .Nullable<int>
int?
HasValue
GetValueOrDefault()
var defaultValueOfNullableInt = default(int?);
Console.WriteLine("defaultValueOfNullableInt == {0}", (defaultValueOfNullableInt == null) ? "null" : defaultValueOfNullableInt.ToString());
var defaultValueOfInt = default(int);
Console.WriteLine("defaultValueOfInt == {0}", defaultValueOfInt);
Console.WriteLine("defaultValueOfNullableInt.GetValueOrDefault == {0}", defaultValueOfNullableInt.GetValueOrDefault());
답변
var x = default (int?);
Console.WriteLine("x == {0}", (x == null) ? "null" : x.ToString());