> 백엔드 개발 > C++ > 왜 '? 10 : null'은 c#에서 nullable 유형으로 실패합니까?

왜 '? 10 : null'은 c#에서 nullable 유형으로 실패합니까?

Susan Sarandon
풀어 주다: 2025-01-28 22:10:10
원래의
953명이 탐색했습니다.

3 개의 위안 컴퓨팅 기호와 빈 유형 : "? 10 : null"의 미스터리를 해결하십시오. 빈 유형을 다룰 때 표현식의 다른 데이터 유형과 호환되는 것을 이해합니다. 일반적인 시나리오는 우발적 인 오류를 일으킬 수 있습니다. 즉, 세 가지 -유안 컴퓨팅 기호는 빈 유형 및 비어 비어있는 유형과 함께 사용됩니다. Why Does 다음 코드 조각을 고려하십시오

여기서 목표는 다음과 같습니다.

를 반환하면 값 10은

에 지정됩니다. 그러나 컴파일러는 오류를 표시합니다

질문 해석

이 오류는 세 가지 -yuan 표현식에서 비 일치 유형의 문제를 강조합니다. 왼쪽 표현식 는 a

값을 반환하고 구문 분석은
<code class="language-c#">int? x = GetBoolValue() ? 10 : null;</code>
로그인 후 복사
또는 , 이것은 GetBoolValue() 문자 볼륨 (true)입니다. x , 이것은 빈 단어입니다. x null 컴파일러는 먼저 올바른 표현을 평가하려고 시도합니다. 그것은 리터럴 와 빈 문자 错误:无法确定条件表达式的类型,因为在 int 和 <null> 之间没有隐式转换。에 직면하고, 그들은 양립 할 수 없습니다. 및

는 숨겨진 변환을 정의하지 않으므로 불완전한 유형의 유형이 발생합니다. 유형을 해결하는 것은 일치하지 않습니다

이 문제를 해결하기 위해서는 올바른 표현식이 빈 유형의 유형과 호환되어야합니다. 몇 가지 방법이 있습니다 :

GetBoolValue() 는 문자 그대로 bool : 로 변환했습니다 true false

빈 유형 또는 기본값을 사용하십시오.
  • 10 암시 적 변환 int int? 수용 가능한 답변에 언급 된 숨겨진 전환은 다음과 같습니다.
  • ~ : null : 빈 유형 는 로 암시 적으로 변환 될 수 있습니다.
to non -empty int는 10로 변환 될 수 있습니다. null int 올바른 표현식의 유형과 호환되면 유형이 문제와 일치하지 않는 문제를 해결하고 null 리턴 값에 따라 적절한 값을 배포 할 수 있습니다.

위 내용은 왜 '? 10 : null'은 c#에서 nullable 유형으로 실패합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿