我想确保LET在LINQ中是惰性的。这意味着,即使在实际评估LINQ查询时,也不会评估因条件而未使用的LET子句。因此,我的问题不是关于LINQ查询的延迟执行,而是关于查询的特定部分。
很明显,我写了一个这样的查询,发现LET是惰性计算的:
Dim dd = From x In {0, 1, 2, 3} Let y = 1 / x, z = If(True, x + 2, y) Select z
但是我的经验表明,有时VB的逻辑不是恒定不变的,因此您可以在测试示例中看到一种行为,而在现实生活中可以看到另一种行为(例如,它发生在“ and”和“ or”中)。
所以我很想知道这一点。我在文档中没有发现任何有关该特定问题的信息。