考慮下面的例程,它通過構建一些默認行爲(例如,沒有空值,不解析「1,1,1」作爲有效數字)來簡化我的生活:c#泛型<T> /約束問題
public static Double CvtToDouble(Object O)
{
if (O == null) return (Double)0;
if (O == System.DBNull) return (Double)0;
if (O is string) return Double.Parse((String)O,
System.Globalization.NumberStyles.Float);
return (T)O;
}
然後對所有的num類型重複這個例程。我想將它們組合都在打字和錯別字保存到
public static T CvtTo<T>(Object O) : where T : "is one of Int32, Int16 ..."
通常「其中T:結構」的約束是遠遠不夠的在這裏,因爲「回報(T)0」語句是對任意值類型無效。似乎應該有某種方式來通用化,而不是向後彎曲,但我沒有看到它。我錯過了什麼?