與高手共同合作是一件令人興奮的事,在很多小細節上能夠學到進階技巧以及錯誤用法,這些東西在平時工作上很不容易發現,且不見得有人能夠提點,甚至是產品運行後短時間不會有問題,直到爆炸的那一刻。作為受益者,我也想繼續分享這些部分,讓閱讀本篇文章的人也能夠枝微末節處,精進 C# 技巧。
宣告空陣列
我們很常會使用陣列來進行資料傳遞,比起 List 更安全且快速,若沒有改變元素或者長度,都應該使用陣列的。(兩者扣除效能外,使用情境也是差異很大)
錯誤的宣告
1 | var array = new int[0]; |
若很確定需要宣告一個空陣列,上述的方法會產生記憶體的分配(allocate),在現在硬體設備強大下,雖然不容易發現,但會使得程式肥大、浪費且給自己埋下不定時炸彈。
正確的宣告
1 | var array = Array.Empty<int>(); |
這樣一來就不會真正的佔用記憶體分配了。
有研究精神的也可以自己動手做看看,使用 BenchmarkDotNet 多跑幾次宣告的迴圈就能夠看得出差異囉!
- 使用方法可以參考以前的文章 效能評估工具 BenchmarkDotNet