我试图以一种通用的方式编写这个函数,这样它就可以处理浮点型、双精度型、十进制或整型。
除了(increment * ti)
给出的语句:“运算符*不能应用于T和int类型的操作数”之外,它是有效的。
public static List<T> RangeIncrement<T>(T start, T end, T increment)
{
T range = (((dynamic)end - (dynamic)start) / increment) + 1;
if (TryCast(range, out int endRange))
{
return Enumerable
.Repeat(start, endRange)
.Select((tr, ti) => tr + (increment * ti))
.ToList();
}
return null;
}
发布于 2019-06-27 03:16:05
只有为数不多的几种类型可以执行乘法运算,而且许多类型都可以隐式转换为其他类型。而不是声明一个泛型类型T
,它几乎可以是任何类型,可能支持也可能不支持乘法,您只需编写覆盖所有这些选项的重载即可。
This chart显示了隐式转换。在此基础上,如果您编写支持int
、double
和decimal
的方法,就应该涵盖所有内容。
在测试过程中,您可能会发现,对于一种类型,它可以正常工作,但对于另一种类型,它却不能正常工作。我会为所有这三种类型编写单元测试。
https://stackoverflow.com/questions/56779446
复制相似问题