我们如何确定列表的最大长度 在c#?

问题描述 投票:-2回答:1

我们如何预测或计算列表可以在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)。

c# list memory
1个回答
0
投票

在评论中讨论了你的问题一段时间之后,我想我会尽力回答它。很难理解你在问什么,因为它触及了一些我怀疑是你不知道的基本内容,以及你的语法非常糟糕的事实。

如果计数是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)复杂动作。

© www.soinside.com 2019 - 2024. All rights reserved.