我可以向List添加多少个值?
例如:
List<string> Item = runtime data
Run Code Online (Sandbox Code Playgroud)
数据的大小不固定.它可能是10 000或超过1 000 000.我用谷歌搜索但没有找到确切的答案.
关于集合中可以包含的最大项目数的主要问题,例如List.我在这里寻找答案,但我不理解这个推理.
假设我们正在与一个List<int>具有sizeof(int)= 4个字节......每个人都似乎是确保为64,你可以有一个最大268435456 int和x86的最大134217728 int.链接:
但是,当我自己测试时,我发现x86并非如此.谁能指出我可能出错的地方?
//// Test engine set to `x86` for `default processor architecture`
[TestMethod]
public void TestMemory()
{
var x = new List<int>();
try
{
for (long y = 0; y < long.MaxValue; y++)
x.Add(0);
}
catch (Exception)
{
System.Diagnostics.Debug.WriteLine("Actual capacity (int): " + x.Count);
System.Diagnostics.Debug.WriteLine("Size of objects: " + System.Runtime.InteropServices.Marshal.SizeOf(x.First().GetType())); //// This gives us "4"
}
}
Run Code Online (Sandbox Code Playgroud)
对于x64:268435456(预期)
对于x86:67108864(比预期少2倍)
为什么人们说包含134217728的List int …
我已经设法制作了一些单维数组列表,但我无法弄清楚多维度的arraylist.
这是我正在尝试做的事情:
我有一个包含5列的数据库(mdb),我希望每一行都在一个数组列表中.
在PHP中,我通常做的是:
$ array [$ field1] = array($ field2,$ field3,$ field4,$ field5);
我是如何在vb.net中做同样的事情所以我需要为特定的row1获取一个项目我可以调用它?
对于单个维度,我可以执行以下操作,但我无法弄清楚如何向单个数组行添加更多字段:
Dim tmpArrayX As New ArrayList
tmpArrayX.Add(field(0))
tmpArrayX.Add(field(1))
etc...
Run Code Online (Sandbox Code Playgroud) 我知道你可以List在C#中添加的项目数量受int限制(因为这是类型count).哪个应该在20亿左右.
但我的问题是说我想要这样的清单:
List<MyClass>= new List<MyClass>;
Run Code Online (Sandbox Code Playgroud)
哪里
class MyClass
{
string s1; // should be string of 8 characters always
DateTime t;
}
Run Code Online (Sandbox Code Playgroud)
MyClass我可以添加多少个对象列表?我现在假设我必须考虑它将占用的内存是numberOfElements * sizeof(MyClass)多少?那么我可以使用这种约束添加多少元素?(我相信由于上面的公式,我的内存可能会比我达到int的最大值更快,不是吗?).