【问题标题】:List of structs vs classes [closed]结构与类列表[关闭]
【发布时间】:2014-03-10 13:17:38
【问题描述】:

我有一个相对较小的字典(最多几百个条目),它正在接收许多调用(每秒数百个,可能是数千个),其中许多需要修改条目。

在性能方面,对于经常更新的小列表,通常推荐使用哪种解决方案?

  1. 拆箱结构体
  2. 为每个需要修改的参数定义结构方法
  3. 使用可以直接修改的类,因为它们的引用方式与结构不同

【问题讨论】:

  • 您的实验向您展示了什么,这些是自然值类型吗?完全不清楚为什么你需要在这里装箱...List<T> 不装箱值。
  • 有什么阻止你自己测试这个吗?
  • @JonSkeet 我可能误解了这个概念。我的意思是将列表值存储在临时结构中,对其进行修改并将其放回列表中。
  • @Chris 如果您实际上使用的是字典或其他需要散列项目的集合类型,则需要小心您更改的内容。如果您对构成散列一部分的值进行变异,则可能会丢失字典中的对象或返回错误的对象。因此,无论如何,您的用例是从字典中删除该项目,对其进行修改,然后将其放回 - 除非您知道您正在更改的内容不会影响哈希。
  • @Chris:嗯,绝对对我来说听起来不像一个值类型。

标签: c# dictionary lookup lookup-tables


【解决方案1】:

如果可能,您应该真正避免可变值类型(即可以修改的结构),因为如果值的一个或多个属性本质上不是值的一部分,它基本上打破了“值类型”的概念本身(因此无法更改)。如果您需要存储可以更改的值,那么您应该使用一个类。

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 2021-12-15
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    相关资源
    最近更新 更多