当给出一个d你可能正在处理一个固定的序列,如列表或数组,AST将枚举一些外部数据源,甚至是一些现有集合上的AST.有没有办法安全地"实现"可枚举,以便像foreach,count等枚举操作每次都不执行AST?
我经常用来.ToArray()创建这个表示,但如果底层存储已经是一个列表或其他固定序列,那似乎就是浪费了复制.如果我能这样做会很好
var enumerable = someEnumerable.Materialize();
if(enumberable.Any() {
foreach(var item in enumerable) {
...
}
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
不必担心,.Any()并foreach尝试枚举序列两次,没有它不成功复制可枚举.