我正在尝试创建一种将可空值四舍五入到给定小数位的方法。理想情况下,我希望这是一个通用的,以便我可以在Math.Round()
允许的情况下将它与双精度和小数一起使用。
我在下面编写的代码将无法编译,因为无法(可以理解地)解析该方法,因为无法知道要调用哪个重载。这将如何实现?
internal static T? RoundNullable<T>(T? nullable, int decimals) where T : struct
{
Type paramType = typeof (T);
if (paramType != typeof(decimal?) && paramType != typeof(double?))
throw new ArgumentException(string.Format("Type '{0}' is not valid", typeof(T)));
return nullable.HasValue ? Math.Round(nullable.Value, decimals) : (T?)null; //Cannot resolve method 'Round(T, int)'
}