C# GetEnumerator方法在什么时候执行?
我对GetEnumerator方法的执行感到困惑。我想知道GetEnumberator方法在什么时候执行。我有一个类a,它有2或3个属性,其中一个属性正在GetENumerator方法中使用。如果我给a类对象的属性赋值,然后把同一个对象赋值给某个可验证的对象。然后我可以看到ResultView值的变化。这意味着当我分配那个对象时,GetEnumerator方法在后端执行。如果我错了,请澄清 当枚举实例时,将调用GetEnumerator。通常,这是在C# GetEnumerator方法在什么时候执行?,c#,ienumerable,enumerator,C#,Ienumerable,Enumerator,我对GetEnumerator方法的执行感到困惑。我想知道GetEnumberator方法在什么时候执行。我有一个类a,它有2或3个属性,其中一个属性正在GetENumerator方法中使用。如果我给a类对象的属性赋值,然后把同一个对象赋值给某个可验证的对象。然后我可以看到ResultView值的变化。这意味着当我分配那个对象时,GetEnumerator方法在后端执行。如果我错了,请澄清 当枚举实例时,将调用GetEnumerator。通常,这是在foreach子句的开头,通常在LINQ中 在
foreach
子句的开头,通常在LINQ中
在调试器中,当您在实例上展开results视图时,也会调用此函数,正如您刚刚发现的那样。它甚至警告你它会这样做。因此,不,当您更改属性时,它不会被调用-它只在您再次开始读取枚举时被调用-这是您在调试器本身中执行的操作。我做了一些测试,并注意到如果我更改了一个属性,并且在GetEnumerator方法定义中使用了相同的属性,则会执行GenEnumertaor方法。我编写了一个示例程序,如果您愿意,我可以与您分享。@User1551892将示例代码放入您的问题中-将其缩减为显示行为所需的最小代码。