2

以下に説明する拡張メソッドがあります。一般的な方法で機能させる方法はありますか。int?、decimal?、long?、double?の場合。または0(ゼロ)の方法に制限があります。異なる数値データ型で比較しましたか?

public static bool IsNotNullAndGreaterThanZero(this decimal? value)
{
return (value ?? 0M) > 0M;
}
4

2 に答える 2

2

さて、あなたはこれを行うことができます:

public static bool IsNotNullAndGreaterThanDefault<T>(this T? value)
    where T : struct, IComparable<T>
{
    return value != null && value.Value.CompareTo(default(T)) > 0;
}

これは、ほとんどの値タイプで、デフォルト値が「自然ゼロ」であるという事実を使用しています。

于 2013-02-12T20:04:07.287 に答える
0

IConvertibleを使用してこれを行うことができます。

public static bool IsNotNullAndGreaterThanZero<T>(this T? value)
     where T : struct, IConvertible
{
    return value != null && value.ToDecimal() > 0M;
}

int / long / doubleなどの基本的な値型はすべて実装されIConvertibleており、これを機能させることができます。

于 2013-02-12T20:05:34.510 に答える