답변:
해당 값 유형이 널 입력 가능 유형 임을 의미합니다.
널 입력 가능 유형은 System.Nullable 구조체의 인스턴스입니다. 널 입력 가능 유형은 기본 값 유형에 대한 올바른 값 범위와 추가 널 값을 나타낼 수 있습니다. 예를 들어
Nullable<Int32>
"Nullable of Int32"로 발음되는 -2147483648에서 2147483647 사이의 값을 지정하거나 null 값을 지정할 수 있습니다. A에Nullable<bool>
true, false 또는 null 값을 할당 할 수 있습니다. 숫자 및 부울 유형에 널을 지정하는 기능은 값이 지정되지 않은 요소가 포함 된 데이터베이스 및 기타 데이터 유형을 처리 할 때 특히 유용합니다. 예를 들어, 데이터베이스의 부울 필드는 true 또는 false 값을 저장하거나 정의되지 않을 수 있습니다.class NullableExample { static void Main() { int? num = null; // Is the HasValue property true? if (num.HasValue) { System.Console.WriteLine("num = " + num.Value); } else { System.Console.WriteLine("num = Null"); } // y is set to zero int y = num.GetValueOrDefault(); // num.Value throws an InvalidOperationException if num.HasValue is false try { y = num.Value; } catch (System.InvalidOperationException e) { System.Console.WriteLine(e.Message); } } }
int
유형과 해당 Integer
클래스 가있는 Java를 생각하고 있다고 생각합니다 .
의 속기입니다 Nullable<int>
. Nullable<T>
값 유형을로 설정하는 데 사용됩니다 null
. 값 유형은 일반적 으로 null 일 수 없습니다 .
value types
null 일 수 없습니다. 값을 구체적으로 할당하지 않고 int 또는 bool (값 유형)을 선언하면 여전히 값 (각각 0과 false)을 갖습니다. 그들은 null이 아니다. reference types
반면에 object 또는 MyClass와 같은 할당되지 않은 경우 null이됩니다. 값 유형과 참조 유형의 차이점을 읽으십시오.
에
x ? "yes" : "no"
? if 문장을 선언합니다 . 여기에서 x 는 부울 조건을 나타냅니다. : 앞의 부분 은 then 문장이고 이후 부분은 else 문장입니다.
예를 들어
int?
? nullable 형식을 선언하고 형식이 null 형식 일 수 있음을 의미합니다.
return value ? value : "isNull";
그것이 string value
bool로 변환 할 수 없다는 것을 알려줍니다 .
널 입력 가능 유형은 System.Nullable 구조체의 인스턴스입니다. 널 입력 가능 유형은 기본 값 유형의 정상 값 범위와 추가 널 값을 나타낼 수 있습니다 . 예를 들어,
Nullable<Int32>
"Nullable of Int32"로 발음 되는 [ ]에 -2147483648에서 2147483647 사이의 값을 지정하거나 널값을 지정할 수 있습니다. [Nullable<bool>
]에 true 또는 false 또는 null 값을 지정할 수 있습니다. 숫자 및 부울 유형에 널을 지정하는 기능은 값이 지정되지 않은 요소를 포함하는 데이터베이스 및 기타 데이터 유형을 처리 할 때 특히 유용합니다. 예를 들어, 데이터베이스의 부울 필드는 true 또는 false 값을 저장하거나 정의되지 않을 수 있습니다.
위의 답변에 추가하려면 다음 코드 샘플이 있습니다.
struct Test
{
int something;
}
struct NullableTest
{
int something;
}
class Example
{
public void Demo()
{
Test t = new Test();
t = null;
NullableTest? t2 = new NullableTest();
t2 = null;
}
}
컴파일 오류가 발생합니다.
오류 12 널이 아닌 값 유형이므로 널을 '테스트'로 변환 할 수 없습니다.
NullableTest에 대한 컴파일 오류가 없습니다. (t2 선언에서?를 참고하십시오)
int?
의 줄임말입니다 Nullable<int>
. 두 가지 형식은 서로 바꿔 사용할 수 있습니다.
Nullable<T>
당신이 값 형식으로 사용할 수있는 운영자입니다 T
받아 들일 수 있도록이 null
.
당신이 그것을 모르는 경우 : 값 유형 으로 값을 받아 종류 int
, bool
, char
등 ...
그들은 값에 대한 참조를 수락 할 수 없습니다 : 참조 유형null
과 반대로을 할당하면 컴파일 타임 오류가 발생하여 분명히 허용 할 수 있습니다.
왜 필요한가요? 때로는 값 형식 변수가 데이터베이스에서 반환되거나 누락되거나 정의되지 않은 변수와 같이 잘 작동하지 않는 것으로 반환 된 null 참조를받을 수 있기 때문입니다.
이 주제를 잘 다루기 때문에 Microsoft 설명서 를 읽으십시오 .