是否有理由System.Buffer.BlockCopy
需要int
參數而不是long
作爲副本的偏移量/長度?流通常與long
一起工作,爲什麼BlockCopy
不會有也需要long
的超載?爲什麼System.Buffer.BlockCopy採用int而不是long?
0
A
回答
3
因爲在.NET 4.5之前,沒有任何對象可能超過2千兆字節。所以沒有理由有更多的int來表示長度。
即使在.NET 4.5中,雖然數組的長度可能超過2 GB,但它不能超過2^31個項目。所以byte[]
的最大尺寸仍然是2千兆字節(減去一點開銷)。 int[]
的最大大小爲2^31個項目或大約8千兆字節等。請參閱gcAllowVeryLargObjects。
+0
啊,好的,謝謝你的信息。 – 2013-03-18 21:59:44
相關問題
- 1. 爲什麼CountDownLatch.getCount()返回一個long而不是int?
- 2. Int而不是Long,bug?
- 3. 爲什麼DateTime.Now.Year是int而不是ushort
- 4. 爲什麼使用int錯誤,但long long long
- 5. 爲什麼int * []衰減爲int **而不是int [] []?
- 6. long long int和long double的區別是什麼?
- 7. 爲什麼不是common_type <long,unsigned long> :: type = long long?
- 8. 爲什麼模板試圖用'int'而不是'int'實例化?
- 9. 爲什麼用int提高性能取代long long?
- 10. long unsigned int和unsigned long int有什麼區別int
- 11. 爲什麼在使用Long而不是Integer時會出現ClassCastException?
- 12. 爲什麼int的對象包裝是Integer而不是Int?
- 13. 爲什麼int的int隱式轉換爲long long int在C++中給出了意想不到的答案?
- 14. std :: vector構造函數 - 爲什麼int而不是int *?
- 15. 爲什麼1e400不是int?
- 16. 枚舉爲int,爲什麼使用類型轉換爲int而不是Convert.ToInt32(Enum)?
- 17. 爲什麼var會以Double而不是Long來解析?
- 18. 爲什麼生成long serialVersionUID而不是簡單的1L?
- 19. 爲什麼Arrays.sort採用Object []而不是Comparable []?
- 20. 爲什麼Realm使用RealmOptional <Int>而不是Int?爲可選屬性?
- 21. 從int轉換爲long long
- 22. 'intmax_t`應該在64位的`long int`和`long long int`平臺上做什麼?
- 23. Long vs Integer,long vs int,使用什麼和什麼時候使用?
- 24. 爲什麼要聲明一個整數(或double,long等),int是不是大寫?
- 25. 爲什麼第二個unsigned long long int打印一個不同的值?
- 26. 爲什麼Vector2(來自XNA的庫)使用float而不是int?
- 27. Java:爲什麼這個程序使用char而不是int?
- 28. 爲什麼人們在C++中使用`main()`而不是`int main()`?
- 29. 爲什麼「引用」一個int(而不是值)存儲?
- 30. 爲什麼要使用TIMESTAMP而不是INT值?
爲了方便起見,您可以使用帶有int64索引的Array.Copy。但它不會像BlockCopy那樣高效。 – Todd 2017-12-02 07:06:03