HashSet和IEnumerables的执行

dev*_*hog 0 c#

当HashSet需要时,HashSet是否始终执行未执行的可发送的可数字?

例如:

list = new List { 1 ..... 1000);

var linq = list.Where(x => x > 10);

var hashSet = new HashSet(linq);
Run Code Online (Sandbox Code Playgroud)

现在当我hashSet.Contains(7)在一个for loop遗嘱中调用时,hashSet总是在需要时执行Where语句?

for(int i = 0; i < 10000; ..)
{
  hashSet.Contains(7);
}
Run Code Online (Sandbox Code Playgroud)

ken*_*n2k 5

不,只有在构建HashSetfrom IEnumerable<T>(构造函数枚举它以填充集合)时才执行查询,因此它不会在执行之后执行.