2010-09-21 95 views
8

MSDN爲什麼Array.Copy支持長篇大論

參數sourceArray

包含數據 副本的陣列。 destinationArray

接收數據的數組。 長度

一個64位整數,表示要複製的元素數量爲 。該 整數必須是零和 Int32.MaxValue之間,包括

假設值的允許範圍爲0Int32.MaxValue,什麼是添加此簽名的動機是什麼?它不存在於.Net 1.0中,只在.Net 1.1中添加。我唯一的猜測是準備64位的框架實現。

+0

或傳統的掛斷 - 永遠不會忘記他們也是MS的凡人。 – 2010-09-21 21:54:26

回答

3

奇怪的是,一個數組也有重載爲GetItem採取Int32和Int64。但實際上,在當前的.NET框架實現中,您不能擁有大於2 GB的單個對象,因此您實際上無法創建允許此類大型索引的數組。

我想如果這個限制後來解除了,那麼這意味着他們不需要改變接口。

+0

這讓我想知道是否可以用下限定義一個數組> int.MaxValue ... – dtb 2010-09-21 23:53:11

+0

@dtb:由於length參數是一個int,所以不使用'CreateInstance'。如果你嘗試做類似於'Array my1DIntArray = Array.CreateInstance(typeof(Int64),new int [] {3},new int [] {Int32.MaxValue - 1});',你會得到一個'ArgumentOutOfRangeException'消息,'Array my1DIntArray = Array.CreateInstance(typeof(Int64),new int [] {3},new int [] {Int32.MaxValue - 1});'' – Brian 2010-09-30 20:11:13

相關問題