但如果沒有上述理由,而且日后對程序做大的改動可能性比較小時,我想也大可不必非要把每個public字段都要變成屬性。比如在設計一些輕型的struct,用于互操作的時候,直接使用public字段沒什么不好。所以,感覺本條目bill wagner先生使用“always use properties instead of accessible data members”顯得太過強硬。
關于第2條,scott meyers先生在effective c++的第22條“盡量使用pass-by-reference(傳址),少用pass-by-value(傳值)”中講的比較清楚。雖然由于c#中的結構類型具有默認的深拷貝語義,沒有拷貝構造器的調用。而且結構類型也沒有子類,因此在某種程度上來講不具有多態性,也就沒有c++對象傳值時可能出現的切割(slicing)效應。但是值拷貝的成本仍然不小。尤其是在這個值類型比較大的情況下,問題就比較嚴重。實際上,在.net框架的design guidelines for class library developers文檔中,在說明什么時候應該使用結構類型的時候,其中提到了一項原則(還有其他一些并行原則)——類型實例數據的大小要小于16個字節。該文檔主要是從類型的運行效率層面來考慮的,而bill wagner先生這里的條款主要是從類型的設計層面來考慮的。