我在这个答案A generic list of anonymous class中读到了如何使用匿名类对象加载列表。我的问题是为什么以及何时推荐使用这种方式而不是使用结构,考虑性能和良好实践。
答案 0 :(得分:0)
我不会说它是推荐使用匿名类,因为不使用它们永远不会错。但它们通常在
时使用最常见的情况是LINQ查询。
答案 1 :(得分:0)
外露场结构本质上是一组用胶带绑定在一起的变量。它不会表现为“对象”,因此可能会被视为邪恶,认为所有应该像对象一样行事;尽管如此,如果一个人并不真正想要一个对象,而是一组用胶带捆绑在一起的变量,那么暴露场结构可能是完美的选择。
与暴露字段结构相比,匿名类只有一些优点:
internal struct WeightAndVolume { public double weight, volume;}
并说结构是“不言自明的”[它包含两个类型为double
的公共字段,名为weight
和volume
,每个都将保存最后由外部代码写入的内容],匿名类不会节省太多,但如果编码标准要求每个命名数据类型都有许多相关文档页面,包括对所需单元的分析 - 测试程序,匿名课程可以避免这样的麻烦。Object
比投射结构要便宜得多。第一次将匿名类实例强制转换为Object
将弥补创建它的额外成本。每增加一个时间就可以节省这笔金额。通常,结构比匿名类更有效。另一方面,有一些场景(主要与上面的第三点相关),其中类最终会更好。