我不太清楚如何解決這個問題,而我目前的實現是笨重的。我在我的類中有一個泛型方法,將數值應用於組合框的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