我最近的代碼是包含很多boxing and unboxing,因爲我的許多變量都是在運行時解決的。 但我讀過拳擊和取消裝箱在計算上非常昂貴,所以我想問問是否有任何其他方法來裝箱/取消箱類型? 這是一個很好的使用方法嗎?C#拳擊/取消裝箱的任何替代品?
1
A
回答
7
使用Generics
....
更多信息here
例如
List lst=new List();//non generic List accepts any kind of object
lst.Add(44);//this causes unnecessary boxing from int to object
lst.Add(100);//this causes unnecessary boxing from int to object
如果您確信該列表將始終包含您可以使用泛型的整數。 。
List<int> lst=new List<int>();
lst.Add(44);//no boxing or unboxing
lst.Add(100);//no boxing or unboxing
-1
在那個具體的問題中,我可以說使用更一般的類型,在這種情況下,字符串和解析它的數字,如果它的數字。更普遍的做法是創建自定義結構或使用元組來表示對於每種情況的真實答案,但它的退出難看。
+0
作爲一個字符串處理int並解析它不是一個好的解決方案。您失去了強大的打字優勢並將潛在的錯誤從設計/編譯時間移至運行時間。這是不可取的。此外,如果解析一個字符串的計算量比拳擊/拆箱的計算量要貴,雖然我沒有統計數據支持,但我會感到非常驚訝。 (抱歉對新用戶不利) – Basic
相關問題
- 1. 拳擊/取消裝箱和可空?
- 2. 任何布爾值的大列表的拳擊問題?任何替代品?
- 3. 拳擊拆箱
- 4. 拳擊與拆箱
- 5. 拳擊與拆箱
- 6. 拳擊開箱在Java
- 7. TortoiseSVN的任何替代品?
- 8. pexpect的任何替代品?
- 9. 任何reddit替代品?
- 10. 是這些拳擊/拆箱的例子
- 11. C#拳擊問題
- 12. c#避免拳擊和重複代碼
- 13. 無論是拳擊還是拆箱?
- 14. 拳擊拆箱,cglib,spring和NoSuchMethodError神祕
- 15. 拳擊和拆箱也在鑄造?
- 16. 拳擊在數據表/拆箱和LINQ
- 17. 做所有的C#轉換導致拳擊/拆箱
- 18. Android的CachingHttpClient的任何替代品?
- 19. 是否有任何固定裝置的替代品?
- 20. EasyHook替代品C#
- 21. 拳擊和拆箱:爲什麼這個代表不匹配?
- 22. 任何DBContext生成器的替代品?
- 23. 任何非私有API的替代品?
- 24. 任何使用MS Kinect的替代品?
- 25. 是否有任何svn_load_dirs.pl的替代品?
- 26. JGo的任何開源替代品?
- 27. 任何自託管的Firebase替代品?
- 28. 任何合適的替代品Double.Nan
- 29. 如何在擴展System.Object時避免裝箱/取消裝箱?
- 30. C#/ MVC3的任何真正的開源替代品?
你有性能問題嗎?你有沒有嘗試分析你的應用程序,看看它是否有任何瓶頸?先擔心已知的瓶頸,然後再擔心可能不成問題的事情。 – Polyfun
#ShellShock 我不認爲性能是我程序中的問題,但我認爲這是一個相當有趣的問題,這也可能對其他用戶也有幫助。 – Janman