【发布时间】:2021-08-17 11:02:02
【问题描述】:
我只是在学习类属性的表达式主体成员,基础知识很简单,但我试图确定以下 getter 是否甚至可以写为表达式主体成员 - 不是为了提高性能或任何东西,只是作为一个学习练习:
public static List<Block> AllBlocks
{
get
{
List<Block> allBlocks = new List<Block>(goalBlocks.Count +
pathBlocks.Count +
boardBlocks.Count);
allBlocks.AddRange(goalBlocks);
allBlocks.AddRange(pathBlocks);
allBlocks.AddRange(boardBlocks);
return allBlocks;
}
}
据我所知,它不能,因为它声明了一个新变量。我已经尝试了几种像其他 FBM 属性一样编写它的方法,甚至尝试用与 Parallel.For 和 Parallel.ForEach 循环相似的样式编写它,我没想到会工作,但我想我会试一试的。
【问题讨论】:
-
好吧,你可以使用
new[] { goalBlocks, pathBlocks, boardBlocks}.SelectMany(x => x).ToList()来达到同样的效果,但效率略低... -
存在数据依赖,所以不要使用任何并行处理。它只会增加不必要的开销。
-
@JHBonarius - 谢谢。我实际上并没有使用并行处理,只是解释了我试图为
getter模仿的一种样式。
标签: c# c#-8.0 expression-bodied-members