代码之家  ›  专栏  ›  技术社区  ›  Kibbee

.Net阵列的LongLength的用途是什么?

  •  4
  • Kibbee  · 技术社区  · 16 年前

    4 回复  |  直到 16 年前
        1
  •  5
  •   Eric Rosenberger    16 年前

    例如,如果您有一个>2 GB的文件,需要一次将其全部读入内存,这就需要这样一个数组。大多数情况下,这并不一定是推荐的方法,但在某些情况下(在具有大量内存的足够强大的64位系统上),可能需要这样做(可能是出于性能原因?)。

    编辑:当然,应该注意的是,从CLR 2.0开始,有一个数组>实际上不支持2GB(LongLength的所有实现都是将长度强制转换为long,并且尝试创建更大的阵列将失败)。。。但也许微软计划稍后再添加支持。。。?

        2
  •  5
  •   paxdiablo    8 年前

    有一个学派被称为“0,1或N”学派,它认为你不应该拥有任何东西;一件事;或 在资源允许的情况下,某物的数量。

    换句话说,如果没有必要,不要设定任意的限制。任意的限制给我们带来了这样的怪物:

    • 早期PC中的640K限制。

    请记住,即使是20亿个64位整数也只需要占用内存

                17,179,869,184 bytes of the
    18,446,744,073,709,551,616 bytes of 64-bit address space available.
    

    这还不到1亿分之一,或者说10万分之一 ,或者你可以 许多的

        3
  •  3
  •   Stefan    16 年前

    再加上它返回 元素在 全部的 数组的维数,因此它可以是一个“只有”5亿个元素和4维的数组,以使它需要64位int。

        4
  •  1
  •   JaredPar    16 年前

    在64位的情况下,很可能会有一个超过20亿条目的数组。LongLength确实是为了支持这样的场景。