C #에서 2 가지 유사한 유형을 비교하는 방법

Huy.Vu

C #에서 두 가지 유형을 어떻게 비교하는지 묻고 싶습니다.

내 시나리오는 다음과 같습니다.

Nullable<int> Rating;
int NeedCompareType;

이 두 가지를 비교할 때마다 잘못된 결과가 반환됩니다. 어쨌든 inttype이 두 줄에 모두 있기 때문에이 경우 true를 반환 할 수 있습니다.

내 비교 라인은 다음과 같습니다.

if(Rating.GetType() == NeedCompareType.GetType())

편집 : 실제로 이것은 내 프로그램 코드였습니다.

    public object this[string propertyName]
    {
        get
        {
            PropertyInfo property = GetType().GetProperty(propertyName);
            return property.GetValue(this, null);
        }
        set
        {
            PropertyInfo property = GetType().GetProperty(propertyName);
            IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);
            if (property.PropertyType == typeof(System.DateTime))
            {
                property.SetValue(this, Convert.ToDateTime(value, culture), null);
            }
            else if (property.PropertyType == typeof(int))
            {
                property.SetValue(this, Int32.Parse((string)value));
            }
            else
            {
                property.SetValue(this, value, null);
            }

        }
    }

이 코드의 목적은 컨트롤러가 브라우저에서받는 값을 String 유형으로 캐스팅 한 다음 String 유형으로 적절한 unknown yet모델 속성 유형 (이 경우 public Nullable<int> Rating { get; set; })으로 변환하는 것입니다.

내가 원할 때 알다시피 propertyName = "Rating", 두 번째 if 문을 실행해야하지만 typeof(int)typeof(Nullable<int>)다를 수 있기 때문에 실행되지 않습니다 .

내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다

존 스키트

실제로이 줄 :

if(Rating.GetType() == NeedCompareType.GetType())

항상 조건에 들어가거나 NullReferenceException-를 던집니다. 왜냐하면 Rating.GetType()will Ratingboxed Int32또는 null 참조에 대한 상자 이기 때문 입니다 .

이제 비교 typeof(int)하고 싶다고 말하면 다음을 typeof(Nullable<int>)사용할 수 있습니다.

public bool SomewhatEqual(Type t1, Type t2)
{
    return t1 == t2 ||
           t1 == Nullable.GetUnderlyingType(t2) ||
           Nullable.GetUnderlyingType(t1) == t2;
}

이제 실제로 관심이있는 코드를 보았으므로 각 속성을 nullable 형식이 아닌 것처럼 처리하려는 것처럼 들립니다. 간단합니다.

set
{
    PropertyInfo property = GetType().GetProperty(propertyName);
    Type type = property.GetType();
    // Treat nullable types as their underlying types.
    type = Nullable.GetUnderlyingType(type) ?? type;
    // TODO: Move this to a static readonly field. No need to
    // create a new one each time
    IFormatProvider culture = new CultureInfo("fr-FR", true);
    if (type == typeof(System.DateTime))
    {
        property.SetValue(this, Convert.ToDateTime(value, culture), null);
    }
    else if (type == typeof(int))
    {
        property.SetValue(this, Int32.Parse((string)value));
    }
    else
    {
        property.SetValue(this, value, null);
    }
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

R에서-유사성에 대한 문자열을 쌍으로 비교하는 가장 빠른 방법

분류에서Dev

사용자 입력을 사용하여 목록 내에서 두 가지 유형을 비교하는 방법은 무엇입니까?

분류에서Dev

2 개의 배열에서 고유 한 요소를 비교하는 방법

분류에서Dev

2 개의 유사한 문자열을 비교하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

C #에서 두 사전 튜플 값을 비교하는 방법

분류에서Dev

IdP Saml2 응답에 대한 사용자 지정 클레임 유형에 대한 특성을 추가하는 방법

분류에서Dev

동일한 유형의 두 개체에서 데이터 멤버를 비교하는 가장 쉬운 방법

분류에서Dev

constexpr에서 유형을 비교하는 방법은 무엇입니까?

분류에서Dev

두 값을 비교하고 유사한 지 확인하는 방법

분류에서Dev

Hibernate Envers에서 감사 유형을 제한하는 방법

분류에서Dev

C의 2 차원 배열에 2 개의 유사한 열이 있는지 확인하는 방법

분류에서Dev

C ++의 종속 유형에서 의존하는 유형을 얻는 방법

분류에서Dev

C # compareto 메서드가 문자열을 비교하는 방법

분류에서Dev

C ++에서 유니 코드와 무관 한 대소 문자를 구분하지 않는 비교를 수행하는 방법

분류에서Dev

두 가지 유형을 비교하는 고유 한 PHP 배열

분류에서Dev

C # 가장 안전한 방법은 유형이 인터페이스에 유형을 포함하는지 확인합니다.

분류에서Dev

c에서 time_t 유형에 대한 초기화되지 않은 값을 나타내는 방법

분류에서Dev

gensim의 Word2vec에서 가장 유사한 방법의 출력을 해석하고 출력 값이 어떻게 나오는지 이해하는 방법

분류에서Dev

specs2에서 객체 유형을 주장하는 방법

분류에서Dev

C #에서 복잡한 유형으로 REST 서비스를 사용하는 방법은 무엇입니까?

분류에서Dev

C #에서 런타임 유형을 확인하는 방법

분류에서Dev

Tensorflow의 C ++ API에서 복잡한 데이터 유형을 사용하는 방법은 무엇입니까?

분류에서Dev

웹 서비스에 업로드 할 파일 유형을 지정하는 방법

분류에서Dev

MongoDB에서 3 가지 다른 값을 비교하는 방법

분류에서Dev

Haskell에서 추가 유형 안전성을 위해 추가 유형을 사용하는 방법

분류에서Dev

다중 스레딩 C #에서 원자 적 작업을위한 정적 사전을 유지하는 방법

분류에서Dev

실제 개체 유형을 모르는 경우 C #에서 두 IEnumerable <T>를 비교하는 방법은 무엇입니까?

분류에서Dev

C #에서 Either 유형을 사용하는 방법은 무엇입니까?

분류에서Dev

C #에서 사전 유형을 대괄호로 래핑하는 방법

Related 관련 기사

  1. 1

    R에서-유사성에 대한 문자열을 쌍으로 비교하는 가장 빠른 방법

  2. 2

    사용자 입력을 사용하여 목록 내에서 두 가지 유형을 비교하는 방법은 무엇입니까?

  3. 3

    2 개의 배열에서 고유 한 요소를 비교하는 방법

  4. 4

    2 개의 유사한 문자열을 비교하는 가장 좋은 방법은 무엇입니까?

  5. 5

    C #에서 두 사전 튜플 값을 비교하는 방법

  6. 6

    IdP Saml2 응답에 대한 사용자 지정 클레임 유형에 대한 특성을 추가하는 방법

  7. 7

    동일한 유형의 두 개체에서 데이터 멤버를 비교하는 가장 쉬운 방법

  8. 8

    constexpr에서 유형을 비교하는 방법은 무엇입니까?

  9. 9

    두 값을 비교하고 유사한 지 확인하는 방법

  10. 10

    Hibernate Envers에서 감사 유형을 제한하는 방법

  11. 11

    C의 2 차원 배열에 2 개의 유사한 열이 있는지 확인하는 방법

  12. 12

    C ++의 종속 유형에서 의존하는 유형을 얻는 방법

  13. 13

    C # compareto 메서드가 문자열을 비교하는 방법

  14. 14

    C ++에서 유니 코드와 무관 한 대소 문자를 구분하지 않는 비교를 수행하는 방법

  15. 15

    두 가지 유형을 비교하는 고유 한 PHP 배열

  16. 16

    C # 가장 안전한 방법은 유형이 인터페이스에 유형을 포함하는지 확인합니다.

  17. 17

    c에서 time_t 유형에 대한 초기화되지 않은 값을 나타내는 방법

  18. 18

    gensim의 Word2vec에서 가장 유사한 방법의 출력을 해석하고 출력 값이 어떻게 나오는지 이해하는 방법

  19. 19

    specs2에서 객체 유형을 주장하는 방법

  20. 20

    C #에서 복잡한 유형으로 REST 서비스를 사용하는 방법은 무엇입니까?

  21. 21

    C #에서 런타임 유형을 확인하는 방법

  22. 22

    Tensorflow의 C ++ API에서 복잡한 데이터 유형을 사용하는 방법은 무엇입니까?

  23. 23

    웹 서비스에 업로드 할 파일 유형을 지정하는 방법

  24. 24

    MongoDB에서 3 가지 다른 값을 비교하는 방법

  25. 25

    Haskell에서 추가 유형 안전성을 위해 추가 유형을 사용하는 방법

  26. 26

    다중 스레딩 C #에서 원자 적 작업을위한 정적 사전을 유지하는 방법

  27. 27

    실제 개체 유형을 모르는 경우 C #에서 두 IEnumerable <T>를 비교하는 방법은 무엇입니까?

  28. 28

    C #에서 Either 유형을 사용하는 방법은 무엇입니까?

  29. 29

    C #에서 사전 유형을 대괄호로 래핑하는 방법

뜨겁다태그

보관