方便的 Count 方法
最近開始在Codewars上用TDD的方式去把題目寫出來
然後每一次寫完都會有發現很多人對C#許多的用法十分的熟悉,每次自己寫完認定已經是最完美的Code時總是會有人寫得比你更好,最好頂多就是寫得一樣或差不多。
很常會有別人的Code更明瞭、簡潔或是效能更好的時候,所以我每一次寫完都很期待會看到什麼樣的Code,進而去學習他們的寫法
而這一次要說的的是Count方法
這一個方法可以省去我們自己去刻一個For迴圈去做計算的動作如下
var count = 0;
for (int i = 0; i < x.Length; i++)
{
count++;
}
//Output:10
總共需要花四行才能夠完成這一個計算的功能,若使用Count方法只需要
var x = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var count = x.Count(); //Output:10
更精簡則可以變成
var x = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }.Count(); //Output:10
有時候過於精簡的程式碼可能會造成程式可讀性的問題,所以撰寫的風格就自行取捨拉!
Count方法方便的是它也可以加Lambda進去進行判別如下,以下程式碼是計算出x陣列中偶數有幾個。
Note: 對 Lambda有興趣的朋友可以到我寫的這篇文章去看看~
var x = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var count = x.Count(i => i % 2 == 0); //Output:5
這個方法在寫很多kata題目時很容易用到,因為在眾多題目裡其實蠻多需要去計算這一個陣列裡面有哪些元素是符合條件的,所以這一個方法我覺得需要讓我記錄一下 :D
補充筆記(感謝FB上的大大提問和補充):
*主要用Count方法是因為可以直接使用lambda去做篩選
如果單純取得陣列元素大小時在效能上使用Length會比Count還要來得好