我们如何预测或计算列表可以在c#中包含List<Model>
的最大对象数?模型有许多属性,如string int double float compostiedatatype。
如果我们有一个List<int>
它简单直接它的最大大小是2 ^ 32,如果对象是复合数据类型怎么办?我们应该计算模型的每个属性的字节并将其相加吗?
object
{
int byte
double byte
string byte
}
对象的大小是=计算(添加属性的每个字节)??
what is the max limit of data into list<string> in c#?
编辑我可以从下面的代码中说些什么?
While(true)
{
try
{
listModel.add({add model});
}
catch(Exception overflow)
{
listModel.Count();
}
}
如果计数是32所以我可以预测列表只能包含32个对象?
为什么我对内存感到疑惑
我是否应该关心内存,假设我每次插入用户时都在内存中有一个对象列表,我们将数据插入到列表中我想知道我的应用程序是否会崩溃?我应该重新考虑一下我的做法吗?在内存中数据具有快速检索时间,如字典检索时间为O(1)。
在评论中讨论了你的问题一段时间之后,我想我会尽力回答它。很难理解你在问什么,因为它触及了一些我怀疑是你不知道的基本内容,以及你的语法非常糟糕的事实。
如果计数是32所以我可以预测列表只能包含32个对象?如果计数是32,你是什么意思?如果你这样做:new List<object>(32);
,你只将List后面的数组实例化为32。列表是幕后的一个数组,有一些像.Add()
这样的附加功能。如果第33次添加对象,它将创建一个具有更大尺寸的新数组,并将所有对象复制到新数组,从而允许您继续添加新对象。
如果你继续添加和添加,显然你的程序将耗尽内存。在Web应用程序的情况下,大多数人使用某种持久性,如数据库(甚至文件系统)。如果您担心程序内存不足,则不应使用List
而只使用数据库,该数据库只占用硬盘上的所有空间。是否有一点我的应用程序将崩溃 - 就像我说你的程序将给你一个OutOfMemoryException
如果你的列表变得太大。
在内存数据有快速的检索时间,如字典检索时间是O(1)
- 内存使用与时间复杂性无关(即O(1)
)。 List
存储在内存中,允许相对(相对于硬盘)快速IO读取操作。 O(1)
时间讲述了算法的复杂性。例如,在C#中访问数组是一个O(1)
复杂动作。