指定& # 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关键字,被传递的值是数字??
这不可能。
您可以将where T : struct, IConvertible
添加为tKV.Value.ToDecimal(CultureInfo.InvariantCulture)
。
非内置:
https://stackoverflow.com/search?q=numeric +通用+ C % 23
您可以尝试Convert.ToDeciaml(tKV.Value)
,因为它将object
作为参数。