"까다로운"것은 각 경우에 "무효"가 의미하는 바를 알아내는 것입니다. "데이터 유형에 대한 기본보다 작은 것으로 간주되는 모든 값이"괜찮 경우에, 당신은 시도 할 수 :
public static bool IsNullOrNegative<T>(this T? source)
where T : struct, IComparable<T>
{
return source == null || source.Value.CompareTo(default(T)) < 0;
}
편집 : 코멘트에 언급 한 바와 같이, 더 "숫자"제약이 없다 - 호출 유효합니다 DateTime
과 같이 비교할 수있는 모든 값 유형에 대해이 메소드를 사용하십시오. 이를 피할 수있는 방법이 없습니다. 제약 조건을 더 추가하면 아마도 세트가 약간 줄어들지 만 완전하지는 않을 것입니다.
정확히 -1과 비교할 때 모든 유형에 대해 값 "-1"을 계산할 수 있어야합니다. 그렇게하는 일반적인 방법은 없습니다. 너 수 수동으로 빌드 "나는 각 유형에 대해 -1"의 Dictionary<Type, object>
빌드하지만 꽤 못생긴 것입니다.
-1이 유효하지 않은 경우 -2가 실제로 유효합니까? 그건 나에게 이상한 것 같다.
잘못된처럼 호출 할 필요가; – AngryHacker
+1 질문에 대한 대답이지만, @AngryHacker가 nullable 숫자 유형을 지정 했으므로 숫자 유형에만 제네릭을 제한 할 방법이 없습니다. 따라서이 확장 메소드는 Boolean, Byte 및 DateTime 변수에서도 작동합니다. – NerdFury
@AngryHacker : "현재 유형에서 -1이 무엇인지"를 말하는 일반적인 방법이 없다는 것을 감안할 때 일반적으로이를 표현하는 것은 꽤 어렵습니다. 물론 잘못된 값을 전달할 수도 있습니다 ... –