C# 6.0 Initialization vs. Expression Bodied Members

結論

唯讀屬性要初始化,請使用 Initialization 語法,而不是 Expression Bodied Members。
Expression Bodied Members 每次讀取都會再評估一次。

緣由

一個 Dictionary 類型的屬性,每次 Add 後 Count 還是 0。
是遇到鬼嗎?
研究了一下,原來是自己耍蠢。

方案

我想要的應該是
Dictionary<string, int> SomeDict  { get; } = new Dictionary<string, int>();
不應該是
Dictionary<string, int> SomeDict => new Dictionary<string, int>();

參考

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/classes#properties

基礎很重要,似是而非最危險。

留言