[c#] nullable 형식 “int”의 기본값은 무엇입니까? (물음표 포함)?

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.
  • boolC #에서 변수 의 기본값 은 false ( reference )입니다. 따라서 HasValue기본 Nullable<T>인스턴스 의 속성 은 false; 그러면 Nullable<T>인스턴스 자체가 null.

답변

나는 일명 값 Nullable<T>.GetValueOrDefault()을 사용하는 수학 계산으로 작업 할 때 특히 편리한 방법 을 공유하는 것이 중요하다고 느꼈습니다 . 속성 을 확인할 필요가없고 대신 사용할 수 있는 경우가 많습니다 .Nullable<int>int?HasValueGetValueOrDefault()

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());


답변