> 백엔드 개발 > C++ > `getBoolValue ()가있는 이유는 무엇입니까? 10 : C# Ternary 연산자의 Null`은 금지 되었습니까?

`getBoolValue ()가있는 이유는 무엇입니까? 10 : C# Ternary 연산자의 Null`은 금지 되었습니까?

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

Why is `GetBoolValue() ? 10 : null` Forbidden in a C# Ternary Operator?
C# Ternary 연산자 및 무효 정수 : 왜

가 실패하는지

C# Ternary 연산자 ()는 와 ? 10 : null 모두 호환 유형을 갖도록 요구합니다. 다음 코드가 컴파일러 오류를 생성하는 이유를 살펴 보겠습니다. 'int'와 ''사이에 암시적인 변환이 없기 때문에 조건부 표현식의 유형을 결정할 수 없으며 핵심 문제를 강조합니다. 컴파일러는

condition ? value1 : value2로, value1로 해석합니다 (이 맥락에서는 값의 부재를 나타냅니다). value2와 널 값 사이에 자동 변환이 없기 때문에 컴파일러는 3 배 표현식의 결과 유형을 유추 할 수 없습니다.

솔루션 : 이 문제를 해결하려면 유형 일관성을 보장해야합니다. 다음은 몇 가지 접근법입니다.
<code class="language-csharp">int? x = GetBoolValue() ? 10 : null; </code>
로그인 후 복사

는 널리 잡을 수없는 정수에 10을 명시 적으로 시전합니다 () : 10 int 이것은 null가 무효 정수로 취급되어야한다고 컴파일러에게 명시 적으로 알려줍니다. null int

명시 적으로

귀무인 정수에 캐스트 : 이것은 명시 적으로

로 캐스트되어

로, 3 원 운영자의 양쪽을 호환시킵니다.

  1. 의 기본값을 사용하십시오

    로 평가하여 널 케이스를 나타내는 유형-안전 방법을 제공합니다. 이것은 종종 명확성을 위해 선호됩니다. int?

    모두 세 가지 솔루션 모두 동일한 결과를 달성합니다.
    <code class="language-csharp">int? x = GetBoolValue() ? (int?)10 : null;</code>
    로그인 후 복사
    는 () 또는 10로 할당됩니다. 핵심은 3 원 운영자의 두 분기가 동일하고 호환되는 유형을 갖도록하는 것입니다. 키워드를 사용하는 것은 일반적으로 가장 읽기 쉽고 관리 가능한 솔루션으로 간주됩니다.

위 내용은 `getBoolValue ()가있는 이유는 무엇입니까? 10 : C# Ternary 연산자의 Null`은 금지 되었습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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