泛型仅限于特定值类型

时间:2019-03-29 11:23:53

标签: c#

我目前正在尝试编写一种扩展方法来计算出允许的十进制方差。在编写它的时候,我想我会将其扩展为通用扩展名,并限制为十进制,浮点数和双精度数。

目前,我不知道如何(或是否有可能)将泛型限制为值类型。

public static bool WithinVariance(this decimal source, decimal allowedVariance, decimal comparisonValue)
        => WithinVariance<decimal>(source, allowedVariance, comparisonValue);

public static bool WithinVariance<T>(T source, T allowedVariance, T comparisonValue)
    // where T : decimal
    // where T : double
    // where T : float 
{
    var allowedDifference = (source / 100) * allowedVariance;
    var difference = source - comparisonValue;
    return Math.Abs(difference) <= allowedDifference;
}

上面的代码不起作用,它只是用来显示我采用的方法。本来我只是想使用一种方法,但是我改成了上面的方法,试图破解它。也尝试不使用where t过滤器来限制扩展方法(请参见注释行)

有人知道这是否可行吗?

0 个答案:

没有答案