据我所知,.NET中的单个实例有2 GB的限制.我没有太多关注,因为到目前为止我主要使用32位操作系统.在32但它或多或少是一个人为的限制.但是,我很惊讶地发现这个限制也适用于64位.NET.
由于诸如List<T>使用数组来存储项目之类的集合,这意味着与在64位上运行的相同应用程序相比,在32位上运行的.NET应用程序将能够在列表中保存两倍的引用类型项.这非常令人惊讶.
有谁知道这个限制是否在CLR 4.0中得到解决(目前我手头没有安装4.0).
今天我注意到C#的String类返回一个字符串的长度作为Int.由于Int总是32位,无论架构如何,这是否意味着字符串的长度只能是2GB或更小?
一个2GB的字符串将是非常不寻常的,并提出许多问题.但是,大多数.NET api似乎都使用'int'来传达长度和计数等值.这是否意味着我们永远受限于适合32位的集合大小?
似乎是.NET API的一个基本问题.我希望通过相当于'size_t'的方式返回count和length之类的东西.