從性能的角度來看,自動實現的屬性和手動實現的屬性之間是否有區別?自動特性與通常聲明的特性之間的性能差異。對或錯?
回答
因爲我們知道他們是在運行時
自動屬性不會在運行時創建創建的,他們是在編譯時生成的。非常像using
,它們有助於語法糖減少打字量。他們只是翻譯成您手動編寫的代碼。
沒有性能差異。除了支持字段名稱之外,生成的代碼與手動完成代碼相同。
正如@dasblinkenlight所強調的那樣,作爲「安全名稱」的支持名稱(如in,無法在C#中創建它)可能會導致無法正確處理名稱的序列化問題。
是的,這是正確的。你可以用你選擇的反編譯器來驗證,比如ildasm。一些像Reflector和dotPeek這樣的工具可能是「聰明的」,足以將它轉換回自動屬性。 – vcsjones 2012-07-13 13:55:58
+1您可能想要提到,在使用自動屬性序列化類對象時,命名差異可能很重要。 – dasblinkenlight 2012-07-13 13:56:21
@dasblinkenlight我會留下你的評論。這個問題不是關於序列化或與自動屬性共同陷阱。 – 2012-07-13 14:00:43
自動屬性語法糖意味着他們的寫作性質
從MSDN採取的簡寫:
在C#3.0及更高版本,自動實現的屬性使 財產申報更簡潔時在屬性訪問器中不需要額外的邏輯 。它們還使客戶端代碼能夠創建 對象如下所示聲明屬性 編譯器創建的私有匿名後臺字段只能通過屬性的get和set訪問器訪問 。
http://msdn.microsoft.com/en-us/library/bb384054(v=vs.90).aspx
有沒有區別。自動屬性在編譯時轉換爲普通屬性。所以這樣的:
public int Prop { get; set; }
製成的東西等價於:
private int _PropField;
public int Prop {
get { return _PropField; }
set { _PropField = value; }
}
- 1. VARCHAR2與NUMBER之間的性能差異
- 2. 顏色聲明之間的性能差異?
- 3. Underscore.js的_.map()和JavaScript的native .map()之間是否存在顯着的特性,性能或兼容性差異?
- 4. 捕獲異常或特定類型異常之間是否存在性能差異? - Java的
- 5. jconn2和jconn3之間的性能差異
- 6. 評估板之間的性能差異
- 7. .exists之間的性能差異?和.where.present?
- 8. drawBitmap和createScaledBitmap之間的性能差異
- 9. to_char和to_date之間的性能差異
- 10. Swazoo和Komanche之間的性能差異?
- 11. 特異性通過htaccess的
- 12. WCF rest vs SOAP webservice之間的性能差異不明
- 13. '=='和'==='之間有明顯的性能差異嗎?
- 14. 非常類似的查詢之間巨大的性能差異
- 15. OpenCL和CUDA之間的性能差距非常明顯
- 16. 與vs一起使用聲明臨時表:性能/差異?
- 17. SP的exec與運行語句之間的性能差異
- 18. ToString()和&concatenation之間的最佳實踐或性能差異
- 19. 原始Socket和UdpClient之間的性能(或其他)差異?
- 20. 在夫特聲明特異性通用類型的變量獨立2
- 21. 性能差異
- 22. 性能差異
- 23. 性能差異Kerberos與NTLM
- 24. re.match與re.search性能差異
- 25. 差異相對於性能
- 26. 循環範圍與循環數組之間的性能差異
- 27. Passanger與Mongrel網絡服務器之間的性能差異
- 28. iframes與ajax之間的性能差異(JSON)
- 29. 性能在後端處理與phantomjs/nodejs之間的差異
自動實現的屬性在編譯時創建的,不是運行。 – Tharwen 2012-07-13 13:53:31
自動屬性是語法糖 – HatSoft 2012-07-13 13:54:20