我不太清楚如何解决这个问题,而我目前的实现是笨重的。我在我的类中有一个泛型方法,将数值应用于组合框的Value属性。我希望这种方法适用于整数,浮点数,小数点和双精度。在内部它会转换成小数。这是目前我的代码:指定数字类型的'Where'关键字
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关键字来指定传入的值是数字?
tDest.Value =(十进制)(对象)tKV.Value – dkackman
@dkackman:如果它是任何其他数字类型,则不起作用。如果你这样做,你也可以使它不是通用的。 – SLaks