Equals를 사용하여 Enum과 const int를 비교할 때 컴파일 오류가 발생하지 않았습니다.

Paseg

C # : 코드 부분 :

class ConstValues
{
   public const int NULL=1;
}

class Example
{
   private enum FormatFunction
   {
      Date,
      Unknown
   }

   ...

   FormatFunction returnValue = fn();

   ...

이제 두 가지 시나리오가 있습니다.

이 방법을 사용하여 반환 코드를 값과 비교할 때

if (!returnValue.Equals(ConstValues.NULL))
{
   ...

컴파일 시간 오류가 발생하지 않습니다 (그리고 이것이 제가 놓친 버그이기 때문에 코드가 의도 한대로 작동하지 않습니다).

하지만 내가 바꿀 때

if (returnValue != ConstValues.NULL)
{
   ...

컴파일 시간 오류가 발생하고 내가 한 실수를 발견했습니다.

enum의 기본 구조가 int라는 것을 이해하지만 Equals를 사용할 때도 컴파일 시간 오류가 발생합니다.

첫 번째 방법은 통과하고 두 번째 방법은 통과하지 못하는 이유는 무엇입니까?

코딩 Yoshi

!=언어 규칙이므로 C #에만 해당됩니다. 이 연산자를 호출하는 것은 얼리 바운드입니다 . 즉, 컴파일 타임에 발생합니다.

Equals 은 프레임 워크 규칙 (이 경우 .NET)이며 런타임시 바인딩됩니다.

를 호출하면 !=컴파일 중에 C # 컴파일러에서 결정을 내리므로 오류가 발생합니다. 호출 Equals하면 런타임에 프레임 워크가 결정합니다. 열거 형이 객체 유형이 아니기 때문에 객체 (boxing)로 변환 된 다음 런타임은 유형이 Equals메소드 를 재정의했는지 확인합니다. 그렇지 않았으므로 기본 구현을 사용합니다.


Equals 참조 유형

인스턴스가 참조 유형 인 경우 기본 구현은 Equals한 개체 참조가 다른 개체 참조와 동일한 지 확인합니다. 동일한 참조 인 경우 true를 반환합니다. 그렇지 않으면 false를 반환합니다.


Equals 값 유형

인스턴스가 값 유형이면 값이 같은지 테스트합니다. 이것이 당신의 경우입니다. 가지고있는 열거 형 값이 상수 값과 같은지 확인합니다. 오류가 표시되거나 발생하지 않습니다. 같거나 같지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

"Python SSL 확장이 컴파일되지 않았습니다. OpenSSL lib가 없습니까?" pyenv를 사용하여 Python을 설치할 때 오류 발생

분류에서Dev

Array.Equals ()를 사용할 때 컴파일 오류가 발생합니다.

분류에서Dev

TextPad / G ++를 사용하여 C ++ 파일을 링크하고 컴파일 할 때 오류가 발생합니까?

분류에서Dev

이 코드는 Visual Studio 2012를 사용하여 컴파일 할 때 오류가 발생하지만 코드 블록을 사용하면 괜찮습니다.

분류에서Dev

DriveInfo.GetDrives ()를 사용할 때 '장치가 준비되지 않았습니다'오류가 발생합니다.

분류에서Dev

문자열 비교를 사용하여 데이터를 필터링하려고 할 때 SwiftUI가 컴파일되지 않습니다.

분류에서Dev

makefile을 사용하여 코드를 컴파일 할 때 오류가 발생합니다. 콘솔을 사용하여 작동

분류에서Dev

컴파일을 시도 할 때 C ++를 처음 사용하면 오류가 발생합니다.

분류에서Dev

MinGW를 사용하여 yaml-cpp를 컴파일 할 때 오류 발생 : 오류 : 'atoi'가 'std'의 구성원이 아닙니다.

분류에서Dev

Boost.Spirit을 사용하여 수학 표현식 평가기를 빌드 할 때 컴파일 오류가 발생했습니다.

분류에서Dev

SCP가 성공적으로 완료되지 않았습니다. (1) Ruby를 사용하여 Windows에서 Ubuntu로 업로드하려고 할 때 오류 발생

분류에서Dev

개체를 NULL과 같아야하는 NULL과 비교할 때 분할 오류가 발생합니까?

분류에서Dev

예제 코드를 작성하려고 할 때 컴파일 오류가 발생했습니다.

분류에서Dev

Java 8 및 Maven 3.2.3을 사용하여 코드를 컴파일하려고 할 때 내 댓글에 대해 이상한 오류가 발생합니다.

분류에서Dev

Java 8 및 Maven 3.2.3을 사용하여 코드를 컴파일하려고 할 때 내 댓글에 대해 이상한 오류가 발생합니다.

분류에서Dev

gcc 컴파일러를 사용할 때이 범위에서 'memcpy'가 선언되지 않았습니다.

분류에서Dev

3 개의 파일을 컴파일 할 때 'operator ='와 일치하지 않는다는 오류를 받았습니다.

분류에서Dev

ACE / TAO ORB 구현을 사용하여 첫 번째 CORBA 서버를 컴파일 할 때 링커 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

SAS Macro & Proc Import를 사용하여 여러 .xlsx 파일을 동시에 가져올 때 "XLSX 파일이 존재하지 않습니다"오류 발생

분류에서Dev

변수를 정의되지 않음과 비교할 때 "변수 정의되지 않음"오류가 발생하는 이유는 무엇입니까?

분류에서Dev

부울과 정수를 혼합 할 때 Mypy에서 오류가 발생하지 않습니다.

분류에서Dev

Swift와 함께 XCTest를 사용할 때 컴파일 오류가 표시되지 않습니다.

분류에서Dev

flatpak-pip-generator를 사용하면 컴파일 할 때 "오류 : 버전을 찾을 수 없습니다"가 발생합니다.

분류에서Dev

교과서에 제공된 C 코드를 컴파일하기 위해 GCC를 사용할 때 발생하는 오류

분류에서Dev

코드는 Main 메서드에서 잘 작동하지만 자체 메서드를 제공하려고하면 메서드를 호출 할 때 IOException과 관련하여 컴파일러 오류가 발생합니다.

분류에서Dev

SPIDER IDE를 사용하여 SICStus에서 Prolog를 컴파일 할 때 오류 발생

분류에서Dev

devc ++에서 코드를 컴파일 할 때이 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

boost :: lockfree :: spsc_queue를 사용할 때 컴파일 오류가 발생합니다 (boost의 버그입니까?).

분류에서Dev

boost :: lockfree :: spsc_queue를 사용할 때 컴파일 오류가 발생합니다 (boost의 버그입니까?).

Related 관련 기사

  1. 1

    "Python SSL 확장이 컴파일되지 않았습니다. OpenSSL lib가 없습니까?" pyenv를 사용하여 Python을 설치할 때 오류 발생

  2. 2

    Array.Equals ()를 사용할 때 컴파일 오류가 발생합니다.

  3. 3

    TextPad / G ++를 사용하여 C ++ 파일을 링크하고 컴파일 할 때 오류가 발생합니까?

  4. 4

    이 코드는 Visual Studio 2012를 사용하여 컴파일 할 때 오류가 발생하지만 코드 블록을 사용하면 괜찮습니다.

  5. 5

    DriveInfo.GetDrives ()를 사용할 때 '장치가 준비되지 않았습니다'오류가 발생합니다.

  6. 6

    문자열 비교를 사용하여 데이터를 필터링하려고 할 때 SwiftUI가 컴파일되지 않습니다.

  7. 7

    makefile을 사용하여 코드를 컴파일 할 때 오류가 발생합니다. 콘솔을 사용하여 작동

  8. 8

    컴파일을 시도 할 때 C ++를 처음 사용하면 오류가 발생합니다.

  9. 9

    MinGW를 사용하여 yaml-cpp를 컴파일 할 때 오류 발생 : 오류 : 'atoi'가 'std'의 구성원이 아닙니다.

  10. 10

    Boost.Spirit을 사용하여 수학 표현식 평가기를 빌드 할 때 컴파일 오류가 발생했습니다.

  11. 11

    SCP가 성공적으로 완료되지 않았습니다. (1) Ruby를 사용하여 Windows에서 Ubuntu로 업로드하려고 할 때 오류 발생

  12. 12

    개체를 NULL과 같아야하는 NULL과 비교할 때 분할 오류가 발생합니까?

  13. 13

    예제 코드를 작성하려고 할 때 컴파일 오류가 발생했습니다.

  14. 14

    Java 8 및 Maven 3.2.3을 사용하여 코드를 컴파일하려고 할 때 내 댓글에 대해 이상한 오류가 발생합니다.

  15. 15

    Java 8 및 Maven 3.2.3을 사용하여 코드를 컴파일하려고 할 때 내 댓글에 대해 이상한 오류가 발생합니다.

  16. 16

    gcc 컴파일러를 사용할 때이 범위에서 'memcpy'가 선언되지 않았습니다.

  17. 17

    3 개의 파일을 컴파일 할 때 'operator ='와 일치하지 않는다는 오류를 받았습니다.

  18. 18

    ACE / TAO ORB 구현을 사용하여 첫 번째 CORBA 서버를 컴파일 할 때 링커 오류가 발생하는 이유는 무엇입니까?

  19. 19

    SAS Macro & Proc Import를 사용하여 여러 .xlsx 파일을 동시에 가져올 때 "XLSX 파일이 존재하지 않습니다"오류 발생

  20. 20

    변수를 정의되지 않음과 비교할 때 "변수 정의되지 않음"오류가 발생하는 이유는 무엇입니까?

  21. 21

    부울과 정수를 혼합 할 때 Mypy에서 오류가 발생하지 않습니다.

  22. 22

    Swift와 함께 XCTest를 사용할 때 컴파일 오류가 표시되지 않습니다.

  23. 23

    flatpak-pip-generator를 사용하면 컴파일 할 때 "오류 : 버전을 찾을 수 없습니다"가 발생합니다.

  24. 24

    교과서에 제공된 C 코드를 컴파일하기 위해 GCC를 사용할 때 발생하는 오류

  25. 25

    코드는 Main 메서드에서 잘 작동하지만 자체 메서드를 제공하려고하면 메서드를 호출 할 때 IOException과 관련하여 컴파일러 오류가 발생합니다.

  26. 26

    SPIDER IDE를 사용하여 SICStus에서 Prolog를 컴파일 할 때 오류 발생

  27. 27

    devc ++에서 코드를 컴파일 할 때이 오류가 발생하는 이유는 무엇입니까?

  28. 28

    boost :: lockfree :: spsc_queue를 사용할 때 컴파일 오류가 발생합니다 (boost의 버그입니까?).

  29. 29

    boost :: lockfree :: spsc_queue를 사용할 때 컴파일 오류가 발생합니다 (boost의 버그입니까?).

뜨겁다태그

보관