考虑下面的例程,它通过构建一些默认行为(例如,没有空值,不解析“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”语句是对任意值类型无效。似乎应该有某种方式来通用化,而不是向后弯曲,但我没有看到它。我错过了什么?