IT TIP

nullable 형식을 비교하는 방법은 무엇입니까?

itqueen 2021. 1. 5. 20:47
반응형

nullable 형식을 비교하는 방법은 무엇입니까?


두 개의 (nullable) 값을 비교하여 동일한 지 확인해야하는 곳이 몇 군데 있습니다.

나는 이것을 지원하는 프레임 워크에 무언가가 있어야한다고 생각하지만 아무것도 찾을 수 없으므로 대신 다음을 사용하십시오.

public static bool IsDifferentTo(this bool? x, bool? y)
{
    return (x.HasValue != y.HasValue) ? true : x.HasValue && x.Value != y.Value;
}

그런 다음 코드 내에서 if (x.IsDifferentTo(y)) ...

그런 다음 nullable int, nullable doubles 등에 대해 유사한 메서드가 있습니다.

두 개의 nullable 형식이 동일한 지 확인하는 더 쉬운 방법이 없나요?

최신 정보:

이 메서드가 존재하는 이유는 코드가 VB.Net에서 변환 되었기 때문이며, 여기서 Nothing = Nothing은 false를 반환합니다 (null == null이 true를 반환하는 C #과 비교). .Equals...대신 VB.Net 코드를 사용해야 합니다.


C #은 "리프트 된"연산자를 지원하므로 bool?컴파일시 유형 ( 이 경우)이 알려진 경우 다음을 사용할 수 있어야합니다.

return x != y;

제네릭이 필요하면 EqualityComparer<T>.Default친구입니다.

return !EqualityComparer<T>.Default.Equals(x,y);

그러나 두 방법 모두 " null == null"방법을 사용합니다 (ANSI SQL과 대조). " null != null" 이 필요 하면 별도로 테스트해야합니다.

return x == null || x != y;

Nullable.Equals<T>?


if (x.Equals(y)) 

System.Object 에서 정적 Equals 메서드를 사용할 수 있습니다 .

var equal = object.Equals(objA, objB);

==, 또는을 사용하십시오 .Equals().


비교 사용 :

http://msdn.microsoft.com/en-us/library/dxxt7t2a.aspx

참조 URL : https://stackoverflow.com/questions/2341660/how-to-compare-nullable-types

반응형

'IT TIP' 카테고리의 다른 글

Bootstrap에서 btn 색상을 변경하는 방법  (0) 2021.01.05
``을  (0) 2021.01.05
Xcode, 중복 기호 _main  (0) 2021.01.05
숫자 범위를 다른 범위에 매핑  (0) 2021.01.05
일시적으로 stdout / stderr 리디렉션  (0) 2021.01.05