> 백엔드 개발 > C++ > C#의 값 유형을 Null과 비교할 수 있나요?

C#의 값 유형을 Null과 비교할 수 있나요?

Linda Hamilton
풀어 주다: 2025-01-16 18:24:14
원래의
653명이 탐색했습니다.

Can Value Types in C# Be Compared to Null?

C#의 값 유형과 Null 비교에 대한 자세한 설명

C#에서는 일반적으로 값 유형(예: 정수)이 null일 수 없다고 생각되지만 실제로는 null 값과 비교할 수 있습니다. 다음 코드 조각에서 볼 수 있듯이 이 동작은 개발자에게 혼란을 줄 수 있습니다.

<code class="language-csharp">Int32 x = 1;
if (x == null)
{
    Console.WriteLine("What the?");
}</code>
로그인 후 복사

이 코드는 x가 null이 될 수 없다는 우리의 예상과 모순됩니다. null은 설정되지 않은 값 개체를 나타내기 때문입니다. 그러나 컴파일러는 오류를 발생시키지 않으므로 이 비교의 타당성에 의문을 제기합니다.

C#에서 연산자를 해결하는 고유한 방식에 대한 설명이 있습니다. 이 경우 컴파일러는 적용될 수 있는 == 연산자의 두 가지 오버로드를 식별합니다.

  1. == nullable 정수 연산자(Nullable)
  2. 표준 정수 == 연산자(Int32)

x와 null은 모두 암시적으로 null 허용 정수로 변환될 수 있습니다(Nullable). 연산자 구문 분석은 보다 구체적인 연산자를 선호하므로 null 허용 정수 연산자(Nullable의 경우 ==)가 선택되고 비교는 항상 false로 평가됩니다.

이 동작은 값 유형을 다른 기본 유형과 비교할 수 있는 패턴과 일치합니다. 예를 들어 x == 12.6(여기서 x는 정수) 비교도 항상 false가 됩니다. 왜냐하면 정수 x는 묵시적으로 배정밀도 부동 소수점 숫자로 변환 가능하고 비교는 두 배정밀도 부동 소수점 숫자 사이에서 이루어지기 때문입니다. .

위 내용은 C#의 값 유형을 Null과 비교할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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