[C#] C # nullable int를 int로 변환하는 방법
nullable int
을 로 변환하는 방법은 int
무엇입니까? 아래와 같이 2 가지 유형의 int가 있다고 가정하십시오.
int? v1;
int v2;
에 v1
값 을 지정하고 싶습니다 v2
. v2 = v1;
오류가 발생합니다. 로 변환 v1
하려면 어떻게합니까 v2
?
답변
지금까지의 다른 답변은 모두 정확합니다. 약간 더 깨끗한 것을 하나 더 추가하고 싶었습니다.
v2 = v1 ?? default(int);
모든이 Nullable<T>
의에 암시 적으로 변환입니다 T
평가되는 전체 표현식이 치 형에 null이 할당 될 수 없다는 제공. 따라서 null 병합 연산자 ??
는 삼항 연산자의 구문 설탕 일뿐입니다.
v2 = v1 == null ? default(int) : v1;
… if / else의 구문 설탕입니다.
if(v1==null)
v2 = default(int);
else
v2 = v1;
또한 .NET 4.0 Nullable<T>
부터는 “GetValueOrDefault ()”메소드가 있습니다.이 메소드는 기본적으로 위에 표시된 널 병합을 수행하는 널 안전 게터이므로 작동합니다.
v2 = v1.GetValueOrDefault();
답변
이렇게
if(v1.HasValue)
v2=v1.Value
답변
값 속성을 사용하여 할당 할 수 있습니다.
v2 = v1.Value;
답변
당신이 필요한 건
v2= v1.GetValueOrDefault();
답변
그 v1
값 이 있다는 것을 알고 있다면 다음 Value
속성을 사용할 수 있습니다 .
v2 = v1.Value;
GetValueOrDefault
메소드를 사용하면 값이있는 경우 값을 지정하고, 그렇지 않으면 유형의 기본값 또는 지정한 기본값을 지정합니다.
v2 = v1.GetValueOrDefault(); // assigns zero if v1 has no value
v2 = v1.GetValueOrDefault(-1); // assigns -1 if v1 has no value
이 HasValue
속성을 사용하여 v1
값이 있는지 확인할 수 있습니다 .
if (v1.HasValue) {
v2 = v1.Value;
}
GetValueOrDefault(T)
메소드에 대한 언어 지원도 있습니다 .
v2 = v1 ?? -1;
답변
v1이 null 인 경우에는 수행 할 수 없지만 연산자로 확인할 수 있습니다.
v2 = v1 ?? 0;
답변
GetValueOrDefault()
객체의 값을 검색합니다. null의 경우, 디폴트 값 int (0)를 돌려줍니다.
예:
v2= v1.GetValueOrDefault();