我想計算嚴格正整數的上限的劃分。我有以下兩種實現方式之間進行選擇:用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