精進 C# - 空陣列宣告

與高手共同合作是一件令人興奮的事,在很多小細節上能夠學到進階技巧以及錯誤用法,這些東西在平時工作上很不容易發現,且不見得有人能夠提點,甚至是產品運行後短時間不會有問題,直到爆炸的那一刻。作為受益者,我也想繼續分享這些部分,讓閱讀本篇文章的人也能夠枝微末節處,精進 C# 技巧。


宣告空陣列

我們很常會使用陣列來進行資料傳遞,比起 List 更安全且快速,若沒有改變元素或者長度,都應該使用陣列的。(兩者扣除效能外,使用情境也是差異很大)

  • 錯誤的宣告
1
var array = new int[0];

若很確定需要宣告一個空陣列,上述的方法會產生記憶體的分配(allocate),在現在硬體設備強大下,雖然不容易發現,但會使得程式肥大、浪費且給自己埋下不定時炸彈。

  • 正確的宣告
1
var array = Array.Empty<int>();

這樣一來就不會真正的佔用記憶體分配了。


有研究精神的也可以自己動手做看看,使用 BenchmarkDotNet 多跑幾次宣告的迴圈就能夠看得出差異囉!

  • 作者: MingYi Chou
  • 版權聲明: 轉載不用問,但請註明出處!本網誌均採用 BY-NC-SA 許可協議。