2
A
回答
10
沒有拳擊或拆箱。你問來幹什麼?解析算法比box/unbox操作要昂貴得多,因此即使存在性能差異,您也不會「感覺」性能差異。
2
我不相信那裏有拆箱。我認爲代碼使用一個int變量並返回它,因此沒有裝箱/取消裝箱。
編輯:我同意280Z28。我只是看了一下代碼,它非常複雜。最終的價值並沒有像我想象的那樣是盒裝的,但是有一些漫長的預處理步驟可以達到目的,所以即使是裝盒,性能也不會有太大的變化。
順便說一句,如果你不知道,你可以使用Reflector自己看代碼。
0
是的。使用Reflector,你可以看到究竟發生了什麼。我看不到任何拳擊,但也有一些石膏,例如:
private static unsafe void StringToNumber(string str, NumberStyles options, ref NumberBuffer number, NumberFormatInfo info, bool parseDecimal)
{
if (str == null)
{
throw new ArgumentNullException("String");
}
fixed (char* str2 = ((char*) str))
{
char* chPtr = str2;
char* chPtr2 = chPtr;
if (!ParseNumber(ref chPtr2, options, ref number, info, parseDecimal) ||
((((long) ((chPtr2 - chPtr)/2)) < str.Length) && //cast
!TrailingZeros(str, (int) ((long) ((chPtr2 - chPtr)/2))))) //cast
{
throw new FormatException(Environment.GetResourceString("Format_InvalidString"));
}
}
}
或此,發生在一個循環:
private static unsafe char* MatchChars(char* p, string str)
{
fixed (char* str2 = ((char*) str)) //cast
{
char* chPtr = str2;
return MatchChars(p, chPtr);
}
}
真正的問題是 - 這樣嗎?
0
添加我的位。
「取消裝箱」的術語/技術僅適用於裝箱值類型。 因此,如果值類型變量未被裝箱(轉換爲引用類型),則可以對其進行拆箱。
在你的情況下,你有一個有效的引用類型值,它沒有範圍被拆箱。
相關問題
- 1. 是否強制轉換爲基類,包括裝箱和拆箱
- 2. 將類型轉換爲拆箱類型
- 3. C# - 有關裝箱/拆箱/類型轉換的問題。我不明白
- 4. 解析或自動裝箱或拆箱
- 5. C中的裝箱和拆箱#
- 6. 拆箱標籤類型是否安全?
- 7. 拆箱值類型
- 8. 用例在C#中裝箱值類型?
- 9. 類別#isAssignable來源和拆箱/裝箱
- 10. 與一般類型和裝箱/拆箱相互作用
- 11. 哪裏限制通用類型與Double Typeparam - 裝箱/拆箱?
- 12. 無法通過引用轉換,裝箱轉換,取消裝箱轉換,包裝轉換或null類型轉換將類型
- 13. 在這個例子中,是否需要拆箱時使用裝箱?
- 14. 鑄造,拆箱,轉換..?
- 15. C#長數據類型拆箱問題
- 16. 拆箱到未知類型
- 17. 拆箱動態類型
- 18. 使用ASM Java庫進行拆箱
- 19. 對CLR中的裝箱和拆箱操作進行了哪些性能改進?
- 20. 拆箱是否昂貴?
- 21. 返回裝箱值類型是否是該類型
- 22. Scalaz拆箱標籤類型不會自動拆箱
- 23. 在C++類中包裝C類庫,並進行類型轉換
- 24. Java的自動裝箱/拆箱wierdness
- 25. 誰來做自動裝箱/拆箱?
- 26. 裝箱和拆箱的概念
- 27. 集裝箱類型Type類
- 28. 使用採用新的與正常decleration和Integer(裝箱/拆箱)
- 29. System.Array是否對值類型執行裝箱操作?
- 30. 使用對象在java中自動裝箱拆箱使用對象
或者只是看看莫諾的版本。在第114行左右:http://anonsvn.mono-project.com/viewvc/trunk/mcs/class/corlib/System/Int32.cs?revision=138730&view=markup – Dykam 2009-10-15 06:31:31