2010-09-21 23 views
8

:neden Array.Copy desteği Uzun Argümanlar <a href="http://msdn.microsoft.com/en-us/library/btfeahds(VS.80).aspx" rel="nofollow noreferrer">MSDN</a> itibaren

Parametreler kaynakDizi kopyasına verileri içeren Dizisi. destinationArray

Verileri alan dizidir. uzunluk

Kopyalanacak öğelerin sayısını gösteren bir 64 bit tam sayı. tamsayı

değerler izin verilen aralık 0 Int32.MaxValue için, bu imzayı eklemek için motivasyon nedir olduğu göz önüne alındığında, sıfır ve Int32.MaxValue arasındaki dahil olmalıdır? .Net 1.0'da mevcut değildi ve sadece .Net 1.1'de eklendi. Benim tek tahminim 64-bit Framework uygulamaları için hazırlamaktır.

+0

ya da eski bir askıda kalmayı unutmayın - MS'de de ölümlü olduklarını asla unutmayınız. –

cevap

3

İlginç olarak, bir dizinin, Int32 ve Int64'i de alan GetItem için aşırı yüklenmeleri de vardır. Ancak pratikte, .NET çerçevesinin şu andaki uygulamasında 2 gigabayttan daha büyük tek bir nesneyiniz olamaz; bu nedenle, bu tür büyük dizinlere izin veren bir dizi oluşturamazsınız.

Eğer bu kısıtlama daha sonra kaldırılmış olsaydı, bu arayüzleri değiştirmeleri gerekmediği anlamına gelir.

+0

Bu, bir alt sınır> int.MaxValue ... – dtb

+0

@dtb ile bir dizinin tanımlanıp kaynaklanmayacağını merak ediyor: Uzunluk parametresi bir int olduğu için 'CreateInstance 'kullanılmıyor. Array my1DIntArray = Array.CreateInstance (typeof (Int64), new int [] {3}, new int [] {Int32.MaxValue - 1}) gibi bir şey yapmaya çalışırsanız, '' ArgumentOutOfRangeException 'ifadesini alırsınız. "Array my1DIntArray = Array.CreateInstance (typeeof (Int64), new int [] {3}, new int [] {Int32.MaxValue - 1}); – Brian

İlgili konular

 İlgili konular