gpt4 book ai didi

c# - 将项目添加到 List/防御性编程

转载 作者:行者123 更新时间:2023-11-30 20:14:10 25 4
gpt4 key购买 nike

在添加到 C# List 时明确检查/处理您没有达到 2^31 - 1(?)最大条目数是疯狂的,是真的还是假的?

(假设这是一个平均列表大小小于 100 的应用。)

最佳答案

<强>1。内存限制

嗯,没有任何属性的 System.Object 的大小是 8 字节(2x32 位指针),或者在 64 位系统中是 16 字节。 [编辑:]实际上,我刚刚检查了 WinDbg,在 x86(32 位)上大小为 12 字节。

因此在 32 位系统中,您将需要 24Gb 内存(在 32 位系统中您不能拥有)。

<强>2。程序设计

我坚信这么大的列表不应该保存在内存中,而应该保存在其他一些存储介质中。但在那种情况下,您始终可以选择创建一个缓存 类来包装一个 List,这将在后台处理实际存储。因此,在添加之前测试大小是错误的测试位置,如果有一天您发现有必要,您的 List 实现应该自己完成。

<强>3。为了安全起见

为什么不在每个方法中添加一个重入计数器来防止堆栈溢出? :)

所以,是的,测试它是疯狂的。 :)

关于c# - 将项目添加到 List<T>/防御性编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/781018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com