我想计算严格正整数的上限的划分。我有以下两种实现方式之间进行选择:用lambda重新定义函数或调用标准API(Math.Ceiling)
var ceil = new Func<int, int, int>((a, b) => a % b > 0 ? a/b + 1 : a/b);
var x = ceil(y, z); // y and z being int previously defined
和
var x = (int)Math.Ceiling((double)y/(double)z);
这第二个版本(Math.Ceiling)似乎是一样的作为第一个(具有拉姆达),但3已添加转化。所以我想用第一个。我错过了什么吗?
(编辑以精确的事实,它的意思是只能用严格的正整数处理)
为什么这里使用lambda?为什么不使用正常的功能? –
我怀疑你会看到任何显着的性能下降与转换。再加上'Math.Ceiling'在意图方面更具可读性。我不会优化,直到你知道这是一个有问题的代码段。 –
@Konrad我不确定要理解你的问题。你是说第二个版本是那个还是你在想别的东西? – Hugo