指定& # 39;在# 39;带有数字类型的关键字

本文关键字:类型 关键字 数字 指定 | 更新日期: 2023-09-27 18:17:37

我不太确定如何解决这个问题,我目前的实现很笨拙。在我的类中有一个泛型方法,它将数值应用于组合框的value属性。我希望这个方法适用于整型,浮点数,小数和双精度。在内部,它将转换为小数。下面是我当前的代码:

private void UpdateValueFromComboBox<T>(ComboBox tSource, NumericUpDown tDest)
{
    NamedKeyValuePair<String, T> tKV = tSource.SelectedItem as NamedKeyValuePair<String, T>;
    if (tKV != null)
    {
        // Update the Control's value with what was saved
        tDest.Value = Decimal.Parse(tKV.Value.ToString());
    }
}

我想做的是摆脱ToString()和Parse()调用。基本上,我希望赋值如下:

tDest.Value = (Decimal) tKV.Value;

但是因为c#不知道'T'是什么或将是什么,它给了我一个错误。我得到一个错误,"不能转换类型'T'到'十进制'"。是否有一种方法来指定,使用Where关键字,被传递的值是数字??

指定& # 39;在# 39;带有数字类型的关键字

这不可能。

您可以将where T : struct, IConvertible添加为tKV.Value.ToDecimal(CultureInfo.InvariantCulture)

非内置:

https://stackoverflow.com/search?q=numeric +通用+ C % 23

您可以尝试Convert.ToDeciaml(tKV.Value),因为它将object作为参数。