And*_*rew 7 .net c# string visual-studio
今天我注意到C#的String类返回一个字符串的长度作为Int.由于Int总是32位,无论架构如何,这是否意味着字符串的长度只能是2GB或更小?
一个2GB的字符串将是非常不寻常的,并提出许多问题.但是,大多数.NET api似乎都使用'int'来传达长度和计数等值.这是否意味着我们永远受限于适合32位的集合大小?
似乎是.NET API的一个基本问题.我希望通过相当于'size_t'的方式返回count和length之类的东西.
Dan*_*Tao 16
似乎是.NET API的一个基本问题......
我不知道我是否会走得那么远.
考虑几乎所有.NET中的集合类.有可能它有一个Count返回的属性int.因此,这表明该类的大小为int.MaxValue(2147483647).这不是一个真正的问题 ; 在绝大多数场景中,这是一个限制 - 而且是一个非常合理的限制.
无论如何,替代方案是什么?有uint- 但这不符合CLS.那就是long......
如果Length返回了long?
试着想象一下像这样的代码令人难以置信的代价:
// Lord knows how many characters
string ulysses = GetUlyssesText();
// allocate an entirely new string of roughly equivalent size
string schmulysses = ulysses.Replace("Ulysses", "Schmulysses");
Run Code Online (Sandbox Code Playgroud)
基本上,如果你认为string数据结构意味着存储无限量的文本,那么你就会有不切实际的期望.当涉及到这种大小的对象时,你是否有必要将它们保存在内存中(而不是硬盘)会变得有问题.
正确,最大长度将是Int32的大小,但是如果你处理大于此的字符串,你可能会遇到其他内存问题.
| 归档时间: |
|
| 查看次数: |
2903 次 |
| 最近记录: |