我正在尝试生成这样的数字:
GetAllNumbersFrom(1, Equality.GreaterThan, 100, ",", 10)
会产生
1, 11, 21, 31, 41, 51, 61, 71, 81, 91,
写的函数是这样的:
public static List<string> GetAllNumbersFrom(int i, Equality equality, int limit, string appendBy, int incrementBy = 5)
{
var greaterThanGivenOrEqualTo = new List<string>();
var smallerThanGivenOrEqualTo = new List<string>();
if (equality == Equality.GreaterThanOrEqualTo)
{
for (var count = i; count <= limit; count = count + incrementBy)
{
greaterThanGivenOrEqualTo.Add(count + appendBy);
}
}
else if (equality == Equality.LesserThanOrEqualTo)
{
for (var count = i; count >= limit; count = count - incrementBy)
{
smallerThanGivenOrEqualTo.Add(count + appendBy);
}
}
else if (equality == Equality.GreaterThan)
{
for (var count = i; count < limit; count = count + incrementBy)
{
greaterThanGivenOrEqualTo.Add(count + appendBy);
}
}
else
{
for (var count = i; count > limit; count = count - incrementBy)
{
smallerThanGivenOrEqualTo.Add(count + appendBy);
}
}
return equality == Equality.GreaterThanOrEqualTo
? greaterThanGivenOrEqualTo
: equality == Equality.GreaterThan
? greaterThanGivenOrEqualTo
: smallerThanGivenOrEqualTo;
}
但是,我确信一定有一个比我写的更简单的版本。一个 5-10 班轮的最佳功能可能是?没有所有笨拙的 if 循环?