2014-02-05 61 views
1

我对GetEnumerator方法执行感到困惑。我想知道GetEnumberator方法在什么时候执行。我有一个类A,它有2或3个属性,并且其中一个属性正在GetEnumerator方法中使用。如果我将一个新值赋给A类对象的该属性,然后将相同的对象赋给某个名副其实的名称。然后我可以看到更改ResultView值。这意味着当我分配该对象时,GetEnumerator方法在后端执行。如果我错了,请澄清我。GetEnumerator方法在什么时候执行?

回答

3

GetEnumerator在枚举实例时被调用。通常,这是在foreach子句的开头,并且经常在LINQ中。

在调试器中,当您展开实例上的结果视图时,也会调用此方法,就像刚发现的那样。它甚至警告你它会这样做。所以不行,当你改变属性时它不会被调用 - 当你开始再次读取enumerable时它只会被调用 - 你在调试器本身中执行的操作。

+0

我做了一些测试,发现如果我改变一个属性,并且在GetEnumerator方法定义中使用相同的属性,那么GenEnumertaor方法就会执行。我写了一个示例程序,如果你想,我可以与你分享。 – User1551892

+0

@ User1551892将示例代码放在您的问题中 - 将其简化为显示行为所需的最小代码。 – Luaan

相关问题