是否可以編寫類似的構造?
我想設置,不知何故,默認值類型T的參數通用方法和可選參數
private T GetNumericVal<T>(string sColName, T defVal = 0)
{
string sVal = GetStrVal(sColName);
T nRes;
if (!T.TryParse(sVal, out nRes))
return defVal;
return nRes;
}
此外,我還發現了以下鏈接: Generic type conversion FROM string
我認爲,這個代碼必須努力
private T GetNumericVal<T>(string sColName, T defVal = default(T)) where T : IConvertible
{
string sVal = GetStrVal(sColName);
try
{
return (T)Convert.ChangeType(sVal, typeof(T));
}
catch (FormatException)
{
return defVal;
}
}
是的,我無法撥打TryParse。但也許有類似的東西?也許給類型參數添加一些約束(我的意思是'where:...')?如果數字類型實現一些轉換接口。 – hardsky 2012-03-27 13:47:30
CLR沒有「虛擬靜態方法」的概念,編譯器不能從一個類型推斷靜態方法。據我所知,沒有乾淨的解決方案。 – 2012-03-27 14:11:08
http://stackoverflow.com/questions/196661/calling-a-static-method-on-a-generic-type-parameter瞭解更多詳情 – 2012-03-27 14:12:00