16
将字符串转换为可为null的类型(int,double等)
我正在尝试进行一些数据转换。不幸的是,许多数据都是字符串形式,应该是int或double等等。 所以我得到的是这样的: double? amount = Convert.ToDouble(strAmount); 这种方法的问题是,如果strAmount为空,如果为strAmount为空,则我希望它等于null,因此当我将其添加到数据库中时,该列将为null。所以我最终写了这个: double? amount = null; if(strAmount.Trim().Length>0) { amount = Convert.ToDouble(strAmount); } 现在可以正常工作,但是我现在有五行代码而不是一行。这使事情更加难以阅读,尤其是当我有大量要转换的列时。 我以为我会使用字符串类和泛型的扩展名来传递类型,这是因为它可以是double或int或long。所以我尝试了这个: public static class GenericExtension { public static Nullable<T> ConvertToNullable<T>(this string s, T type) where T: struct { if (s.Trim().Length > 0) { return (Nullable<T>)s; } return null; } } 但是我得到了错误:无法将类型'string'转换为'T?' 有没有解决的办法?我对使用泛型创建方法不是很熟悉。