簡體   English   中英

數組大小大於 Int32.MaxValue 時的 .Length 行為與 LongLength

[英].Length behavior vs .LongLength when array size is larger than Int32.MaxValue

我正在尋找一些關於數組的 .Length 和 .LongLength 屬性之間差異的文檔。

具體來說,如果數組的長度大於Int32.MaxValue,will.Length會拋出異常,返回Int32.MaxValue,變為負值,返回0?

(清除“可能重復”的問題:我不是在詢問數組的最大長度,或者 .NET CLR 對象的最大大小。假設一個 64 位系統和一個支持大對象的 CLR 版本)

不可能創建具有超過 2,147,483,591 個元素的一維數組(為了比較, int.MaxValue是 2,147,483,647)。 如果嘗試創建包含更多元素的數組,則會拋出OutOfMemoryException 這意味着LongLength屬性仍然沒有用,您可以改用Length屬性

我已經使用 .NET 4.5 在 x64 平台上對其進行了測試。 為了創建包含 2,147,483,591 個元素的數組,我修改了配置文件並添加了:

<configuration>
    <runtime>
        <gcAllowVeryLargeObjects enabled="true" />
    </runtime>
</configuration> 

基本上,我使用此MSDN 頁面來啟用總大小大於 2 (GB) 的數組。 數組的真正限制:

對於字節數組和單字節結構數組,任一維度的最大索引為 2,147,483,591(0x7FFFFFC7),對於其他類型為 2,146,435,071(0X7FEFFFFF)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM