Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GetEnumerator方法在什么时候执行?_C#_Ienumerable_Enumerator - Fatal编程技术网

C# GetEnumerator方法在什么时候执行?

C# GetEnumerator方法在什么时候执行?,c#,ienumerable,enumerator,C#,Ienumerable,Enumerator,我对GetEnumerator方法的执行感到困惑。我想知道GetEnumberator方法在什么时候执行。我有一个类a,它有2或3个属性,其中一个属性正在GetENumerator方法中使用。如果我给a类对象的属性赋值,然后把同一个对象赋值给某个可验证的对象。然后我可以看到ResultView值的变化。这意味着当我分配那个对象时,GetEnumerator方法在后端执行。如果我错了,请澄清 当枚举实例时,将调用GetEnumerator。通常,这是在foreach子句的开头,通常在LINQ中 在

我对GetEnumerator方法的执行感到困惑。我想知道GetEnumberator方法在什么时候执行。我有一个类a,它有2或3个属性,其中一个属性正在GetENumerator方法中使用。如果我给a类对象的属性赋值,然后把同一个对象赋值给某个可验证的对象。然后我可以看到ResultView值的变化。这意味着当我分配那个对象时,GetEnumerator方法在后端执行。如果我错了,请澄清

当枚举实例时,将调用GetEnumerator。通常,这是在
foreach
子句的开头,通常在LINQ中


在调试器中,当您在实例上展开results视图时,也会调用此函数,正如您刚刚发现的那样。它甚至警告你它会这样做。因此,不,当您更改属性时,它不会被调用-它只在您再次开始读取枚举时被调用-这是您在调试器本身中执行的操作。

我做了一些测试,并注意到如果我更改了一个属性,并且在GetEnumerator方法定义中使用了相同的属性,则会执行GenEnumertaor方法。我编写了一个示例程序,如果您愿意,我可以与您分享。@User1551892将示例代码放入您的问题中-将其缩减为显示行为所需的最小代码。